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

本文介绍了C++标准库中的顺序容器(vector、deque 和 list)和关联容器(map 和 set)的特点与应用场景。顺序容器支持动态增长,适用于需要频繁访问元素的场景;关联容器则支持高效的元素查找。
摘要由CSDN通过智能技术生成

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

 

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值