这里开始进入c++的集合类型了。vector,deque,list。
1,随机访问:vector适合
如果元素个数已知:vector适合
任意位置插入元素:list适合
只在头和尾插入或删除元素:vector适合
如果要在头插入元素:deque适合
2, 容量是什么东西。容量是对于连续存储的容器来说的,比如vector,string,deque,方法capacity()能获取当前的容量,也可以理解,下次容器增加长度的值是多少,就是这个容量的2倍。而list则没有容量这么一说。所以也没有capacity方法了。size()是获取当前容器中的元素个数,和容量2马事情。
3,vector和list在存储数据上的比较:
当是小额数据时vector比list好。(时间上)
当是大额数据时list好于vector。(时间上)
因为,vector的长度增长是按照容量来的,也就是当第一次增长的数据量满了,接着第二次增长,但是这个增长的过程比较复杂,首先要调用所有原容器中的数据的构造函数,然后复制到新增长后的内存区域,接着调用原析构函数,如果数据量变大的话,明显的感觉到动作频繁。
而list则没有这个问题,list通过双向链表改变头元素的前后指针即可。但是过程需要移动中间元素,所以小数据看不出优越性,大数据则明显在时间上优于vector。
解决vector的大数据不足可以在数据量过大时转换到list。
4,预定义容器时:元素类型有3个要素需要遵守:1.支持equality操作符。2.支持小于操作符。3.支持默认构造函数,或者没有定义任何构造函数。
5, const类型的vector必须使用const类型的iterator。
6,swap()和=的区别。在对容器做赋值操作时,swap保留原始容器内容,而=不保留。swap后,获取被复制容器的大小。
7,
原文链接: https://www.cnblogs.com/sdywcd_coffee/archive/2010/01/12/1645275.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/6670
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!