一.先从size 和capacity 说起 resize(),设置大小(size); reserve(),设置容量(capacity); size()是分配容器的内存大小,而capacity()只是设置容器容量大小,但并没有真正分配内存. 打个比方:买了一个新房子,新房子里可以放3张床reserve(3),这是说房子的容量是最多放3张床,但是屋里并不是有三张床,二resize(3),房里安装了3张床,此时房里的床可以使用了. reserve为容器预留足够的空间,避免不必要的重复分配,分配空间大于…
原文:http://www.seacha.com/article.php/knowledge/cbase/2013/0903/2205.html C++ vector(向量容器)是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组,或者作为动态内存.   在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即c…
条目二十三<考虑用排序的vector替代关联容器> 在看到这个条目的标题的时候,说实话,我一下子是比较懵逼的.这个结论怎么和数据结构的时间复杂度不一致了? 一般来说,像map,set等关联容器的底层因为是红黑树结构,那么即使红黑树的时间复杂度并非是绝对的对数时间,但也是稳定的接近对数时间. 然而类似vector这种序列容器的时间复杂度是线性的. 所以在涉及到对数据有查找操作的时候,在二者之间我基本是选择map或set的. 但是这条目毕竟是大神侯老爷子提出的,必定有其原因.好吧,看完几遍后,总算…
std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义 这个容器保存了所有客户端连接的channel Channel2* LibEvtServer::CreateChannel(bufferevent* be) { auto c2 = new Channel2; c2->ser = this; auto c = new Channel(be);//这个be比较重要,be是基于socket的bufferevent,包含socke…
/** * 删除头部元素 * 切割map到指定的个数 * @param map * @param i * @return */ map<int, Rect> PublicCardFrameDetection::cutmap(map<int, Rect> map, int i) { int map_num = map.size(); if (map_num > i){ auto iter = map.begin(); map.erase(iter); return cutmap…
http400错误基本都是http请求参数与服务器接收参数不匹配造成的, 如:1)post请求,你发了个get请求 2)content-type指定不匹配致使参数无法读出来…
转自:https://blog.csdn.net/studentyyl/article/details/21177445 vector是一个线性顺序结构.相当于数组,但其大小可以不预先指定,并且自动扩展.它可以像数组一样被操作,由于它的特性我们完全可以将vector 看作动态数组. 在创建一个vector 后,它会自动在内存中分配一块连续的内存空间进行数据存储,初始的空间大小可以预先指定也可以由vector 默认指定,这个大小即capacity()函数的返回值.当存储的数据超过分配的空间时vec…
STL 三种顺序容器的特性对比: vector 可变数组,内存空间是连续的,容量不会进行缩减.支持高效随机存取,即支持[]和at()操作.尾部插入删除效率高,其他位置插删效率较低: list 双向链表,内存空间可不连续,不支持随机存取.插入和删除的效率很高: deque  双端队列,内存空间是多个连续的内存块,在一个映射结构中保存对这些块以及顺序的跟踪,可利用的内存更大,且内存大小是可以自动缩减的.支持随机存取,但是随机存取性能没有vector 好.首尾插入效率高,其他位置插删效率低: 使用注意…
假设我们预先为容器添加了一部分元素,接着用clear将它们删除,容器内部分配的存储空间实际上不会减小,改变的只是能够访问的元素个数.如下所示: std::vector<int> vec; for(int i=0;i<1000;i++) vec.push_back(i);vec.clear(); std::cout<<vec.capacity()<<std::endl; 此时控制台会输出1066,很明显之前的存储空间没有变化. 如果我们想要删除不必要的存储空间,可以…
如果要自己定义STL容器的元素类最好满足STL容器对元素的要求    必须要求:     1.Copy构造函数     2.赋值=操作符     3.能够销毁对象的析构函数    另外:     1.可用的缺省构造函数,序列型容器必须,用于初始化元素     2.==操作符定义,用于判断相等     3.<操作符定义,关联型容器必须,用于缺省排序 你可在struct內加入 operator < ,就可以使struct有排序能力.因為而你的pcd struct內沒有指針,所以不須要有copy c…