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;

 

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

C++ Primer学习总结 第7章 类

第7章 类 1.    引入const成员函数(C++ Primer P231-232) C++类的常量对象是无法调用非const成员函数的,如果想让常量对象调用某个成员函数,必须声明...
  • u013480600
  • u013480600
  • 2015年03月07日 01:02
  • 1566

C++primer第九章习题解答

练习9.1:对于下面的程序任务,vector、deque和list哪种容器最为适合?解释你的选择的理由。如果没有哪一种容器优于其他容器,也请解释理由。 (a)读取固定数量的单词,将他们按字典顺序插入到...
  • sunhero2010
  • sunhero2010
  • 2016年03月31日 15:00
  • 2945

如何利用《C++ Primer》学习C++?

《C++ Primer》作为久负盛名的C++经典教程,丰富的教学辅助内容、精心组织的编程示范,无论是初学者入门,或是中、高级程序员提升,都是不容置疑的首选。一本好书只有读过才有价值,然而《C++ Pr...
  • shiyanlou_chenshi
  • shiyanlou_chenshi
  • 2015年08月14日 16:00
  • 1214

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

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

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

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

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

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

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

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

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

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

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

纯虚函数(pure virtual function),包含纯虚函数的类是抽象基类(abstract base class)。不能创建抽象类型的对象(object)。 方法,在函数形参表后面写上 =...
  • huqinweI987
  • huqinweI987
  • 2012年05月05日 23:14
  • 5556

抽象容器(参考c++ primer 3rd和习题解)

1.什么是容器: 容器肯定是用来盛东西的,语言中的容器主要用来存储数据。容器还可以分为顺序容器、关联容器等。 2什么是顺序容器: 顺序容器(sequence container)就是拥有单一数据...
  • u010307996
  • u010307996
  • 2013年04月23日 22:34
  • 477
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++ primer学习之--------抽象容器类型
举报原因:
原因补充:

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