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

    技术2025-10-01  8

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

     

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

    最新回复(0)