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

原创 2011年02月15日 14:53:00

    顺序容器(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;

 

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

相关文章推荐

抽象容器类型

vector在增长过程中,会动态申请新的memory,然后释放调以前的存储区.在这个过程中,会调用基类的constructor,和destructor....
  • ggxi
  • ggxi
  • 2004年10月13日 10:54
  • 384

c++容器类

什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的...

C++对象模型-读书笔记

1. 简单对象模型: 一个object是一系列的slots,每一个slot指向一个members。Members按其声明次序,各被指定一个slot。...

[C++]标准库类型容器

update:2016/11/161.标准库类型vectorvector能够容纳绝大多数类型的对象作为其元素,但是由于引用并不是对象,因此不存在包含引用的vector。除此之外,其他大多数(非引用)内...

C++primer学习笔记-----7.1定义抽象数据类型

【累的基本思想是数据抽象和封装。数据抽象是一种依赖于接口和实现分离的编程技术;封装实现了类的接口和实现的分离。】 【对于非抽象数据类型来说,其用户直接访问它的数据成员并编写自己所需的操作是允许的;...

【C++ Primer】【学习笔记】【第十章】关联容器之:pair类型

pair类型和容器一样,也是一种模板类型。 一、pair类型对象的创建和初始化 创建pair对象时,必须提供两个类型名。如下: pair anon;            // 调用默认...
  • jay_yin
  • jay_yin
  • 2015年01月09日 15:14
  • 298

【C++ Primer】【学习笔记】【第十章】关联容器之:set类型

一、set容器定义 set容器支持大部分的map操作,但如下两种操作除外: 1、set不支持下标操作; 2、set没有定义mapped_type类型。 注:set存储的元素仅仅是键,而不存储所...
  • jay_yin
  • jay_yin
  • 2015年02月06日 16:53
  • 369

【C++ Primer】【学习笔记】【第十章】关联容器之:map类型

使用map对象,则需要包含map头文件。在定义map对象时,必须分别指明键和值的类型。 一、map对象的定义 map的构造函数如下: 构造函数 ...
  • jay_yin
  • jay_yin
  • 2015年01月13日 00:25
  • 437

【C++ Primer】【学习笔记】【第十章】关联容器之:multimap和multiset类型

一、基本概念 map和set容器,一个键只能对应一个实例;而multimap和multiset容器则允许一个键对应多个实例。 multimap类型使用的头文件与map类型一样,均为map;同样地,...
  • jay_yin
  • jay_yin
  • 2015年02月10日 15:09
  • 230

抽象基类,容器、句柄类与继承--《C++ Primer》笔记

纯虚函数(pure virtual function),包含纯虚函数的类是抽象基类(abstract base class)。不能创建抽象类型的对象(object)。 方法,在函数形参表后面写上 =...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++ primer学习之--------抽象容器类型
举报原因:
原因补充:

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