jackywgw的专栏

c/c++ linux php web mysql python tcp/ip shell java

c++ primer学习之--------抽象容器类型

    顺序容器(sequnce container)拥有由单一类型元素组成的一个有序集合。两个主要的顺序容器是list和vector,

还有一个deque(提供了与vector相同的行为,但是对于首元素的有效插入和删除提供了特殊的支持。

    关联容器(associative container)支持查询一个元素是否存在,并且可以有效地获取元素。两个基本的关联容器类型

是map(映射)和set(集合)。

    map是一个键/值对:键用于查询,而值包含我们希望使用的数据。

    set包含一个单一键值,有效支持关于元素是否存在的查询。

    map和set 都只包含每个键的唯一出现。

 

 

一、顺序容器

      vector,deque以及list都是动态增长的。

      vector表示一段连续的内存区域,每个元素被顺序存储在这段内存中。优点:随机访问效率高,访问的起始位置固定。缺点:在中间插入/删除元素,需要移动后面所有元素,效率低。

      一个deque也表示一段连续的内存区域,但它支持高效地在其首部插入和删除元素。它通过两级数组结构来实现,一级表示实际的容器,第二级指向容器的首和尾。

      list表示非连续的内存区域,并通过一对指向首尾元素的指针双向链接起来,从而允许向前和向后两个方向进行遍历。优点:在list的任意位置插入和删除元素的效率都很高。缺点:对随机访问的支持不好;有两个指针的额外开销。

 

     为了定义一个容器类型的对象,必须先包含相关的头文件,即下列头文件之一:

     #include <vector>
     #include <list>
     #include <deque>

     所有的容器都是类模板。要定义某种特殊的容器,必须在容器名后面加一对<>,<>里面提供容器中存放的元素的类型:

 

     vector<string> svec;

     list<int> ilist;

     deque<sales_item> items;

 

所有容器类型都定义了默认构造函数,用于创建指定类型的空容器对象。默
认构造函数不带参数。

阅读更多
文章标签: c++ vector list 存储
个人分类: c++
上一篇c++ primer学习之----重载
下一篇从1到100,每数到7的时候,把该数字提出来,剩下的数字继续循环,问最后剩下的一个数字是多少。
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭