顺序容器:vect list deque比较

来源:互联网 发布:java linux cpu使用率 编辑:程序博客网 时间:2024/06/06 05:06

原创: http://blog.sina.com.cn/u/2312748742

vect list deque 都是由c++的STL提供的数据结构。

一、vect(向量)是一个系列容器,所以元素是连续的,相当于一个动态的数组。所以每个元素都是储存在一个连续的空间中。可以通过下标直接随机的访问。与动态数组的不同的是它是通过内部实现空间的自动扩展机。内部根据数据的数量大小进行申请空间,当出现空间不够时,先申请更大的连续空间,再把原来的数据拷贝到目标新的空间,数据的移动会消耗较多的资源。
   优点:1、可以通过下标[]快速访问到元素。
            2、可以通过迭代器访问元素。
     3、可以在尾部快速的添加和删除元素。
       缺点:1、对于在中间的元素,实现在其插入和删除元素的效率都比较低。
二、list(列表)是一个链表的系列容器,采用双向链表实现,元素的空间可以不连续,跟vect和deque比能快速高效的在其任意位置进行插入和删除。并能通过算法快速的对元素进行排序(只需要改变其指针,不需要移动元素)。
优点:1、可以在任意位置快速的插入和删除节点。
     2、可以高效的与其他容器交换元素。
     3、可以使用迭代器顺序或逆序的访问元素。
       缺点:1、访问链表中的每一个元素都必须从头到尾,查找数据需要O(n)时间复杂度。
     2、需要额外的空间储存指针信息来维护每一个元素的逻辑关系。
三、deque(双短队列)是vect的扩展。由多个连续空间组成,通过内部机制实现逻辑上的连续,从而实现通过下标随机访问每个元素,deque进程用在需要随机访问,并且需要在头尾大量添加或者删除数据的场合。
优点:1、可以通过下标[]快速访问到元素。
     2、以通过迭代器访问元素。
           3、可以在头部和尾部快速的添加和删除元素。
      缺点:1、和vect相同。
原创粉丝点击