c++
天涯遍地是小草
这个作者很懒,什么都没留下…
展开
-
c++多线程(一)初识多线程
一、相关库C++标准并没有提供对多进程并发的原生支持,所以C++的多进程并发要靠其他API——这需要依赖相关平台。C++11 标准提供了一个新的线程库,内容包括了管理线程、保护共享数据、线程间的同步操作、低级原子操作等各种类。标准极大地提高了程序的可移植性,以前的多线程依赖于具体的平台,而现在有了统一的接口进行实现。C++11 新标准中引入了几个头文件来支持多线程编程:1、 &l...原创 2018-08-15 14:37:07 · 438 阅读 · 0 评论 -
C++中数组定义及初始化
一、一维数组1.静态 int array[100]; 定义了数组array,并未对数组进行初始化 2.静态 int array[100] = {1,2}; 定义并初始化了数组array 3.动态 int* array = new int[100]; delete []array; 分配了长度为100的数组array 4.动态 int* array = new int100; ...转载 2018-06-25 07:10:05 · 881 阅读 · 0 评论 -
C++之delete常见错误总结
1、动态分配内存后释放了一次,再次释放 1)直接删除2次int main() { int *a = new int(50); cout<<*a<<endl; delete a; delete a; return 0; } 2)另外一个指针指向分配的内存,然后把这个2个指针都删除int* p1 ...转载 2018-06-25 07:04:20 · 1874 阅读 · 0 评论 -
C++运算符重载
c++运算符:算术运算符:+,-,*,/,%,++,--;位操作运算符:&,|,~,^(位异或),<<(左移),>>(右移)逻辑运算符:!,&&,||;比较运算符:<,>,>=,<=,==,!=;赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=;其他运算符:[],(),->,,(逗号运算符),new,delete,new[],delet...转载 2018-03-01 09:14:06 · 213 阅读 · 0 评论 -
C++中堆和栈的完全解析
C++中堆和栈的完全解析内存分配方面:堆: 操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删 除,并将该结点的空间分配给程序,另外,对于大多数系统,会在这块内存空间中的首地址处记录本次分配的大小,这样代码 中的delete语句才能正确的释放本内存空间。我们常说的内存泄露,最常见的就是堆泄转载 2016-09-20 15:48:47 · 260 阅读 · 0 评论 -
STL中的set容器的一点总结
1.关于setC++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时候,STL按照程序员的使用习惯,以成员函数方式提供的常用操作,如:插入、排序、删除、查找等。让转载 2016-08-13 15:59:12 · 320 阅读 · 0 评论 -
STL中list,vector,deque,map,set区别、联系和使用场景
vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当该数组后的内存空间不够时,需要重新申请一块足够大的内存并进行内存的拷贝。这些都大大影响了vector的效率。list就是数据结构中的双向链表(根据sgi stl源代码)转载 2016-08-13 15:53:39 · 444 阅读 · 0 评论 -
#ifndef #define #endif的用法
#ifndef #define #endif的用法http://www.eetop.cn/blog/?56085/action_viewspace_itemid_1145.html文件中的#ifndef头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的转载 2016-08-17 18:53:53 · 431 阅读 · 0 评论 -
c++多线程(二)互斥量
一、简介互斥量是一种同步原语,是一种线程同步的手段,用来保护多线程同时访问的共享数据.std::mutex: 独占的互斥量,不能递归使用.std::timed_mutex: 带超时的独占互斥量,不能递归使用.std::recursive_mutex: 递归互斥量,不带超时功能.std::recursive_timed_mutex: 带超时的递归互斥量.这些互斥量的基本接口十分...原创 2018-08-15 16:40:18 · 853 阅读 · 0 评论