C++顺序容器vector、deque、list

原创 2015年07月08日 14:49:24

1、容器元素类型

    C++中大多数数据类型可以作为容器的元素类型。容器元素类型必须满足一下两个条件:支持赋值和复制操作。

    所以没有元素是引用类型的容器,同时IO对象和auto_ptr也不能作为容器的元素类型。

2、vector容器的自增长

    vector容器中存储的元素在内存中是连续存储的。假如容器中没有空间容纳新元素,此时由于元素必须连续存储以便索引访问,所以不能在内存中随便找个地方存储这个新的元素,于是vector必须重新分配空间,用于存放原来的元素和新添加的元素:存放在旧容器中的元素被复制到新的容器中,接着插入新的元素,最后撤销旧的存储空间。为了使vector容器实现快速的内存分配,其实际分配的容量要比当前所需的空间多一些,vector容器预留这些空间,用于存放新的元素。

    list容器中添加元素时,只需要创建一个新的元素,然后将该元素连接到已经存在的链表中,不需要重新分配存储空间,也不用复制任何已存在的元素。

3、vector、deque、list三种容器的特点

    vector:支持快速随机访问、可高效的在vector容器尾部添加删除数据

    deque:支持快速随机访问、可高效的在deque容器头部和尾部添加删除数据

    list:支持顺序访问,但是在任何位置插入删除元素都很快

4、vector容器基本操作

  1. #include "stdafx.h"  
  2. #include <string>  
  3. #include <iostream>  
  4. #include <vector>  
  5. using namespace std;  
  6.   
  7. int main(int argc, char* argv[])  
  8. {     
  9.     //vector定义并初始化  
  10.     vector<int> v1;  
  11.     for (int i=0;i<10;i++)  
  12.         v1.push_back(i+1);  
  13.   
  14.     //使用迭代器遍历vector  
  15.     vector<int>::iterator iter=v1.begin();  
  16.     for (;iter!=v1.end();iter++)  
  17.     {  
  18.         cout<<*iter<<" ";  
  19.     }  
  20.     cout<<endl;  
  21.     return 0;  
  22. }  
版权声明:本文为博主http://www.feixueteam.net原创文章,未经博主允许不得转载。

C++三种容器:list、vector和deque的区别

在写C++程序的时候会发现STL是一个不错的东西,减少了代码量,使代码的复用率大大提高,减轻了程序猿的负担。还有一个就是容器,你会发现要是自己写一个链表、队列,或者是数组的时候,既要花时间还要操心怎么...
  • gogoky
  • gogoky
  • 2016年05月06日 17:35
  • 10323

vector和list以及deque的区别和各自优缺点

vector和list以及deque的区别 各自优缺点: vector: 优点: 随机存取,即[]操作和vector.at() 动态操作,push_back()与pop_back() 自动...
  • AriesSurfer
  • AriesSurfer
  • 2012年11月01日 10:54
  • 4867

C++顺序容器vector,deque,list

容器即可以包含各种的数据形式的结构类,c++ stl中可以理解为存放其他对象的对象,在c++标准库中有许多容器类型,包括顺序容器和关联容器,这里介绍几种顺序容器的基本操作和应用; 1、这里先介绍标准...
  • ahafg
  • ahafg
  • 2015年10月26日 11:49
  • 437

STL中vector、list、deque的区别

1 vector     向量 相当于一个数组     在内存中分配一块连续的内存空间进行存储。支持不指定vector大小的存储。STL内部实现时,首先分配一个非常大的内存空间预备进行存储,即...
  • luliyuan
  • luliyuan
  • 2014年04月02日 11:12
  • 2140

vector,list,deque等内存分配及各方面的注意事项

1.vector       其实连续存储空间,其容量总是大于等于其内元素的个数,当进行插入操作时,如果分配的内存空间不够,则会分配新的空间(大小为原来的空间加上原来空间的一半),其iterator...
  • wxwjiayou
  • wxwjiayou
  • 2017年03月15日 14:38
  • 668

C++/STL用erase删除元素(vector,deque),(list,set,map)

STL中的容器按存储方式分为两类,一类是按以数组形式存储的容器(如:vector 、deque);另一类是以不连续的节点形式存储的容器(如:list、set、map)。在使用erase方法来删除元素时...
  • u010003835
  • u010003835
  • 2015年08月11日 20:25
  • 2605

C++各个容器比较(vector,deque,list,set,map,queue,stack)

1、vector(连续的空间存储,可以使用[ ]操作符)可以快速的访问随机的元素,快速的在末尾插入元素,但是在序列中间随机的插入、删除元素要慢。而且,如果一开始分配的空间不够时,有一个重新分配更大空间...
  • onlysingleboy
  • onlysingleboy
  • 2013年10月24日 14:50
  • 5277

STL中list,vector,deque,map,set区别、联系和使用场景原理

一、Vector:动态数组       vector和built-in数组类似,它拥有一段连续的内存空间,并且起始地址不变,因此它能非常好的支持随机存取,即[]操作符,但由于它的内存空间是连...
  • caojunhao123
  • caojunhao123
  • 2013年09月22日 20:35
  • 2077

STL顺序容器【vector】【deque】【list】

我们都知道,stl容器中将容器分为两类,序列式容器和guan
  • y990041769
  • y990041769
  • 2014年07月31日 10:45
  • 1931

C++ 9.1 顺序容器-----vector、list、deque

简介==================================================================================================...
  • hlsdbd1990
  • hlsdbd1990
  • 2015年06月01日 10:14
  • 507
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++顺序容器vector、deque、list
举报原因:
原因补充:

(最多只允许输入30个字)