喝着一杯咖啡

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

这里开始进入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, 

 

posted on 2010-01-12 16:31  喝着一杯咖啡  阅读(1235)  评论(0)    收藏  举报