随笔分类 - C++
摘要:1、什么是队列【queue】 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。 关于队列的基本操作方法: add():添加一个元素,若超出了度列的长度会直接抛出异常。 put():添加一个
阅读全文
摘要:STL不是语法要点,而是工具,如果能解决问题,即使一点也不懂也没问题;如果能提供便利去编程,何乐而不为。 本文配合MFC的CString使用;map是键值对; 0、头文件 #include <memory>//stl没有.h 1、使用typedef类型定义 typedef std::map<CStr
阅读全文
摘要:一、thread 本着能用STL就不用其他库的原则,本文以c++11的std::thread作为接口开发。【VS2010不支持C++11的线程,VS2013支持】 根据我另一个帖子,线程函数只能是全局或者静态的。https://www.cnblogs.com/judes/p/5921104.html
阅读全文
摘要:new一个类的时候,调用这个类的构造函数,然后在这个类的生命周期内可能会动态生成很多指向堆上的内存,所以应该在析构函数里回收这些内存; 当delete这个类的时候,会首先调用这个类的析构函数,即回收生命周期内的内存,然后再回收这个类对象在堆上的内存
阅读全文
摘要:void fun(void **p) { *p =.. } void main() { byte* p = NULL; fun((void**)&p); } 其实就是二级指针
阅读全文
摘要:毕业以来也换了几份工作了,大部分在搞C++,做过上位机【MFC、QT、C#..】,做过纯C++后台【企业存储】。在某XX公司做纯C++时,真正摆脱了界面开发。以前没接触过的C++11也有所了解,不至于老牛啃南瓜无从下口。 在做过好几个MFC和QT的项目后,一直想接触C++的东西,可是没机会,就在网上
阅读全文
摘要:1、 vector所有的内存相关问题都可以归结于它的内存增长策略。vector有一个特点就是:内存空间只会增长不会减少。vector有两个函数,一个是capacity(),返回对象缓冲区(vector维护的内存空间)实际申请的空间大小,另一个size(),返回当前对象缓冲区存储数据的个数。对于vec
阅读全文
摘要:1、作为迭代器 使用前: #include<string> #include<vector> int main() { std::vector<std::string> vs; for (std::vector<std::string>::iterator i = vs.begin(); i !=
阅读全文
摘要:1、std::vector vector与数组类似,拥有一段连续的内存空间,并且起始地址不变。便于随机访问,时间复杂度为O(1),但因为内存空间是连续的,所以在进入插入和删除操作时,会造成内存块的拷贝,时间复杂度为O(n)。 此外,当数组内存空间不足,会采取扩容,通过重新申请一块更大的内存空间进行内
阅读全文
摘要:一、头文件 #include <memory> 二、独占智能指针unique_ptr 1、生成 //生成 1、创建空的 std::unique_ptr<int> ptr1; 2、通过指针创建 std::unique_ptr<Task> taskPtr(new iTask(22)); 3、通过make
阅读全文
摘要:隐式调用: int a =0; int b=1; Swap(a,b); 显示调用: int a=0; int b=1; Swap<int>(a,b); 也可以多类型的
阅读全文
摘要:#define SWAP(t,a,b) \ do{ \ t c = a; \ a = b; \ b = c; \ }while(0); void main() { ...
阅读全文
摘要:1、代码 2、分析 argc:代码参数个数 argv:二级指针,很多个字符串,这里代表参数列表3、分析 这个代码最终被编译成exe,打开cmd,进入其路径:name.exe 参数1 参数2... 注意第0个参数是程序的名字,所以经常在代码里写:if(参数1==“”)。。。
阅读全文
摘要:1、参数加const:int fun(const int a) a在函数里不可被修改 2、函数前加const:const int* const fun() 这种一般是返回的指针或者是引用,加const是规定返回值不可被修改 3、函数后加const:int fun()const 这个函数不能访问类中所
阅读全文
摘要:#define MIN(a,b) (a<b ? a : b) #define MIN(a,b) (a>b ? a : b)
阅读全文
摘要:1、现象 经常看到有些代码在delete之后赋值为null 2、原因 C++标准规定:delete空指针是合法的,没有副作用。 所以我们在Delete指针后赋值为NULL或0是个好习惯。对一个非空指针delete后,若没有赋NULL,若再次delete的话,会报错
阅读全文
摘要:一、什么匿名对象 Class A{ .... }; A* a = new A;//a是对象 new A;//在内存中生成的对象没有任何指针或者引用指向,这就是匿名对象,匿名对象在作用块结束之后就没gc回收 二、匿名对象的使用 以QTableWidget举例,给某个item设置内容,用的是: 第三个参
阅读全文