C++
文章平均质量分 58
-兮
Holly
展开
-
Windows 数据类型 (Windows Data Types)
【代码】Windows 数据类型 (Windows Data Types)原创 2023-02-13 13:59:18 · 1371 阅读 · 0 评论 -
《C++Primer 中文第四版》 笔记
《C++Primer 中文第四版》原创 2022-11-11 13:16:58 · 737 阅读 · 0 评论 -
QT获得Windows的COMPUTER_NAME_FORMAT里面的信息,例如AD域、NetBIOS
#include <sysinfoapi.h>#include <winnls.h>#include <QDebug>void GET_COMPUTER_NAME_FORMAT(){ QStringList list; TCHAR buf[256]; unsigned long size = sizeof(buf); QString message[8] = { "NetBIOS", "DnsHos原创 2022-04-28 22:33:55 · 311 阅读 · 0 评论 -
C++程序设计
类的声明class A {public: A() = default; //使用默认的构造函数 A() = delete; //禁用此构造函数 //析构函数不能delete 如果为private/删除,则【默认/拷贝构造函数为private删除】 //类有析构函数,也需要拷贝构造和拷贝赋值函数 virtual ~A(); //有继承的情况下,一般声明为虚析构函数,这样子才能多态释放内存 //拷贝构造函数 不传引用会导致陷入死循环 涉及堆上申请内存,需要进行深拷贝,.原创 2022-04-08 23:05:59 · 854 阅读 · 0 评论 -
大整数乘法
#include<iostream>#include<cstring>using namespace std;char s1[1005], s2[1005];int n1[1005], n2[1005], ans[2005];int main() { cin >> s1 >> s2; n1[0] = strlen(s1); n2[0] = strlen(s2); for (int i = 1, j = n1[0...原创 2021-07-05 13:43:21 · 67 阅读 · 0 评论 -
大整数求和
结果#include<iostream>#include<cstring>using namespace std;int num1[1005], num2[1005], sum[1005];char s1[1005], s2[1005];int main() { cin >> s1 >> s2 //得到大整数的长度 num1[0] = strlen(s1); num2[0] = strlen(s2); .原创 2021-07-02 14:24:14 · 87 阅读 · 0 评论 -
C++解决典型的IPC问题:哲学家就餐问题《C++多线程编程实战》
互斥量:代表相互排斥或者能够给对象提供独占访问 死锁:指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。 饥饿:进入死循环...原创 2019-02-14 18:09:00 · 808 阅读 · 1 评论 -
C++线程模拟的实现《C++多线程编程实战》
线程是CPU可执行调度的最小单位进程不能获得CPU时间,只有它的线程可以线程通过它的工作变量和栈来储存CPU寄存器的信息.栈包含与函数调用相关的数据,在每个函数被调用但尚未返回时,为其创建一个框架线程可以在CPU上执行,而进程则不行进程至少必须有一个线程,通常把这个线程称为主线程. 当我们说在CPU上执行的进程时,指的是进程中的主线程进程用于分组资源,线程是在CPU上调度执行的实体多...原创 2019-02-15 14:27:33 · 819 阅读 · 0 评论 -
C++线程的用法《C++多线程编程实战》
需要安装MySQL C ConnectorCMYSQL.h#include "pch.h"#include <stdio.h>#include <stdlib.h>#include <mysql.h>class CMySQL{public: static CMySQL* CreateInstance(char* szHostName,...原创 2019-02-15 18:12:30 · 346 阅读 · 1 评论 -
C++ 进程的实现《C++多线程编程实战》
PCB进程控制块.大致分为3类 : 1)进程表示数据; 2)进程状态数据; 3)进程控制数据.是管理进程的中心.NtProcessDemo.cpp演示如何获得一个进程的基本信息结构地址#include &lt;Windows.h&gt;#include &lt;winternl.h&gt; //包含了大部分Windows内部函数的原型和数据表示#include &lt;iostre...原创 2019-01-30 17:26:24 · 1527 阅读 · 0 评论 -
C++在用户空间实现线程《C++多线程编程实战》
ConcurrentFileCopy.h#pragma once#include &quot;resource.h&quot;#include &amp;lt;Windows.h&amp;gt;#include &amp;lt;CommCtrl.h&amp;gt;#include &amp;lt;memory.h&amp;gt;#include原创 2019-02-17 17:57:57 · 331 阅读 · 0 评论 -
C++在内核实现线程《C++多线程编程实战》
整个内核就是一个进程. 内核有一个线程表,跟踪该系统中所有的线程.回收用户级线程: 如果线程管理开销非常小,没必要这样做要求必须安装WinDDK,驱动程序开发工具包本示例有2个项目windows桌面应用程序项目一: KernelThreadThreadApp.h#include <windows.h>#include <tchar.h>#defin...原创 2019-02-23 17:28:24 · 760 阅读 · 0 评论 -
C++3.1线程的一些介绍《C++多线程编程实战》
3个线程操作:线程创建 线程终止 加入父线程创建线程用 CreateThread,其API原型如下:HANDLE WINAPI CreateThread( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID lp...原创 2019-02-23 21:51:41 · 134 阅读 · 0 评论 -
C++演示进程和线程在创建和使用方面的巨大区别《C++多线程编程实战》
进程必须要从磁盘加载一个文件.进程是完整的实体.真正需要的时候才使用进程创建进程要使用许多系统资源还有其它例如守护进程(daemon),监听器(服务器)等线程比进程快得多,开支也小得多.创建进程不用从磁盘加载,只要提供StartAddress指针就可以进行小型的并发操作,绝大多数情况下都应该选择线程演示进程和线程在创建和使用方面的巨大区别有2个项目控制台项目一:tmpTh...原创 2019-02-23 22:30:27 · 657 阅读 · 0 评论 -
C++协作式和抢占式多任务处理《C++多线程编程实战》
Windows 2000之前的Windows OS 用的是协作式多任务处理原则OS依赖资源平均共享. 即应用程序把控制权返回OS, 以便让其他进程(应用程序)也能获得处理器时间之后的实现了抢占式多任务处理原则OS按时暂停线程的执行,让其他线程也能获得相等的处理器时间其执行任务时更简单,更安全....原创 2019-02-24 14:06:33 · 838 阅读 · 0 评论 -
C++基本线程的管理《C++多线程编程实战》
由于VS2017编译器的问题,本次开发环境在QT5.7.0.0下CThread项目:CThread.h#ifndef CTHREAD_H#define CTHREAD_H#include <windows.h>//#include <Windows.h>const int STATE_RUNNING = 0x0001; //设置运行标志...原创 2019-02-24 21:59:39 · 550 阅读 · 0 评论 -
C++ IPC进程间的通信《C++多线程编程实战》
临界值:程序中能被访问共享内存的部分进程间通信示例:程序一开始就有2个进程,它们在一个普通窗口中完成绘制矩形的任务。2个进程相互通信,一个进程再画矩形时,另一个进程要等待IPCWorker.cpp#include &amp;lt;Windows.h&amp;gt;#include &amp;lt;tchar.h&amp;gt; //_tcscmp() _TCHAR*#define COMMUNI原创 2019-02-14 11:05:56 · 4505 阅读 · 1 评论 -
C++ 解释进程模型《C++多线程编程实战》
ProcessDemo.cpp#include &amp;lt;Windows.h&amp;gt;#include &amp;lt;iostream&amp;gt;using namespace std;int main(){ STARTUPINFO startupInfo = { 0 }; PROCESS_INFORMATION processInformation = { 0 }; BOO原创 2019-01-20 21:32:26 · 247 阅读 · 0 评论 -
C++ 链表,队列和栈示例《C++多线程编程实战》
由于用的IDE是VS2017,书中的代码不全,自己随便实现了protected的6个函数,以及继承毛病添加上了 CList::先给出项目的文件列表CList.h#ifndef _LIST_#define _LIST_#include <Windows.h>template <class T>class CNode{public: CNod...原创 2019-01-20 19:19:38 · 432 阅读 · 0 评论 -
C++多线程编程实战 摘录 (C++ Multithreading Cookbook)
所用软件为Visual Studio第一章表示从解决方案配置的项目路径开始搜索,&quot;header&quot;表示与C++项目相关的当前文件夹开始搜索。int main(int argc, char* argv[]):第一个参数计数表示第二个参数中的参数个数。argv中的每个字符串都代表一个命令行参数,其中第一个字符一定是当前程序的名称。每次处理并行任务,如果要等待用户输入或依赖外部,就应该为类似...原创 2019-01-20 21:13:12 · 405 阅读 · 0 评论 -
C++11摘要
看了《深入理解C++11》顺便做的摘要: 第二章 保持稳定性和兼容性(17处改动) 1.2 __func__预定义标识符:返回所在函数的名字//不可作为函数参数 1.3 _Pragma操作符(字符串字面量)//可用于宏//和...原创 2018-07-18 11:40:31 · 279 阅读 · 0 评论 -
网易C++笔试考点汇总(不断更新中)
### printf 从右向左编译,从左向右输出,符合栈模型 ### 类中变量赋值顺序是变量声明顺序,初始化列表的执行顺序是变量的声明顺 序 ### 32位编译器:char : 1个字节char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就 是4个字节。同理64位编译器为8个字节)short int : 2个字节int...原创 2018-07-31 20:39:20 · 961 阅读 · 0 评论 -
箭指offer:斐波那契数列
笔试面试的时候,一般都是拿剑指的题目考,就算不是完全一样也会是变形的题目转载 2018-08-02 10:07:53 · 112 阅读 · 0 评论 -
Effective C++
条款1:尽量用const和inline而不用#define 编译器会永远也看不到符号名条款2:尽量用而不用原创 2018-08-22 18:01:42 · 131 阅读 · 0 评论 -
CGI的GET和POST方法的区别
CGI程序的工作一般就是接收表单数据,进行数据处理,最后根据处理结果生成新的页面返回给浏览器。转载 2018-08-20 10:55:40 · 708 阅读 · 0 评论 -
考虑内存重叠的strncpy
char *strncpy(char *dst, const char *src, size_t len){ assert(des != NULL &amp;&amp; src != NULL); int offset = 0; char *ret = dst; char *tmp; if(strlen(src) &lt; len) { ...转载 2018-08-29 00:00:57 · 366 阅读 · 0 评论 -
次最短路径Roadblocks(POJNo.3255)
问题:某街区共有R条道路、N个路口。道路可以双向通行。问1号路口到N号路口的次短路的长度是多少?次短路指的是比最短路长度长的次短路径。同一条边可以经过多次。限制条件1⩽N⩽50001⩽R⩽100000输入示例:N=4R=41 2 100 //1 2表示节点,100表示1、2之间距离2 4 2002 3 2503 4 100输出示例:450Di...转载 2018-08-29 00:04:56 · 242 阅读 · 0 评论 -
C++:杨辉三角的队列实现
#include <bits/stdc++.h>const int MAXSIZE = 10;const int LINE = MAXSIZE -4;using namespace std;typedef struct{ int data[MAXSIZE]; int front; int rear;}SeqQueue;SeqQueue ...转载 2018-09-03 22:37:37 · 1296 阅读 · 0 评论 -
《C和指针》摘要(POINTERS ON C)
只是摘要一些自己不懂的或认为重要的。C并不具备任何输入/输出语句;I/O是通过调用库函数实现的。C也不具备任何异常处理语句,它们也是通过调用库函数来完成的。...原创 2018-10-01 18:59:53 · 186 阅读 · 0 评论 -
C++筛选法求n以内素数(空间换时间)
#include <iostream>using namespace std;#define MAX_NUM 10000000char isPrime[MAX_NUM + 10];//最终如果isPrime[i]为1,则表示其为素数int main(){ for(int i = 2; i <= MAX_NUM; ++i)//开始假设所有数都是素数 ...原创 2018-10-02 00:50:50 · 1322 阅读 · 0 评论 -
C++实现快速排序
void QuickSort(int iArray[],int left, int right){ //快速排序之前先判断一下当前待排序数组元素个数是不是大于1 否则就没有必要排序 if (left >= right) return; //开始进行快排算法 //首先我们先保存left索引对应的数据 当前数据作为切割数组的轴 int piovt...原创 2018-10-16 00:50:02 · 160 阅读 · 0 评论 -
《C++沉思录》(Ruminations on C++)摘要
第四章类:需要构造函数,不需要构造函数的类例如其结构就是接口。数据成员最好为私有。使用成员函数设置数据成员,都心知肚明。声明类对象且不显示初始化,必须写一个无参的构造函数。最好每个构造函数初始化所有的数据成员。不是所有的类都需要析构函数,例如表示复数的类。虚析构函数用在继承且通常都是空的。类在构造函数内分配资源、除了空的虚析构函数的析构函数的类用析构函数来释放构造函数分配的资源,通...原创 2019-02-07 02:56:09 · 248 阅读 · 0 评论 -
C++ OOP的复数实现 《C++多线程编程实战》
#include &amp;lt;iostream&amp;gt;using namespace std;double Rand(double dMin, double dMax){ double dVal = (double)rand() / RAND_MAX; //产生0~1之间的数 return dMin + dVal * (dMax - dMin);}class CComplex{...原创 2019-01-19 17:27:48 · 152 阅读 · 0 评论 -
C++ 解释继承,重载,覆盖 《C++多线程编程实战》
#include &amp;lt;iostream&amp;gt;using namespace std;class CPerson{public: CPerson(int iAge, const char* sName) { this-&amp;gt;iAge = iAge; strcpy_s(this-&amp;gt;sName, 32, sName); //安全函数,保障有效的缓冲区尺寸 }原创 2019-01-19 18:55:32 · 241 阅读 · 0 评论 -
C++ 理解多态《C++多线程编程实战》
#include &lt;iostream&gt;#define M_PI 3.14159265358979323846using namespace std;class CFigure{public: virtual const char* FigureType() = 0; virtual double Circumference() = 0; virtual doubl...原创 2019-01-19 19:27:46 · 269 阅读 · 0 评论 -
C++ 事件处理器和消息传递接口《C++多线程编程实战》
敲完代码的时候,显示了一些错误;MSVCRTD.lib(exe_main.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 “int __cdecl invoke_main(void)” (?invoke_main@@YAHXZ) 中被引用然后在项目-&gt;属性-&gt;链接器-&gt;系统-&gt;子系统:把/SUBSYSTEM:CONSOLE改为/...原创 2019-01-19 21:58:44 · 910 阅读 · 0 评论 -
标准C++复习
第二章 数据输入与输出第三章C++基础第四章 类与对象第五章 继承5.4派生类的构造函数只负责直接基类初始化 但虚拟继承中,存间接虚基类,须负责初始化 5.5单,多继承调用次序:基类--对象成员--派生类构造函数 5.6 class 派生类名:virtual [继承方式] 基类名1 ...{}; 虚拟继承 解决命名冲突...原创 2018-07-16 22:00:16 · 146 阅读 · 0 评论