C++_STL常用容器有哪些
这篇文章主要介绍了C++_STL常用容器有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
创新互联建站长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为类乌齐企业提供专业的成都网站设计、成都网站制作、外贸网站建设,类乌齐网站改版等技术服务。拥有10余年丰富建站经验和众多成功案例,为您定制开发。
1、关联容器
关联容器是存储对象集合的类型,支持通过键的高效查询。关联容器的大部分行为与顺序容器相同,二者的本质区别在于关联容器通过键存储和读取元素,而顺序容器是通过元素在容器中的位置顺序存储和访问元素。
关联容器的每个元素包含一个键值(key)和一个实值(value)。当元素被插入到关联容器中时,容器内部数据结构便依照其键值大小,以某种特定规则将这个元素放置于适当位置。关联容器没有所谓的头尾,只有最大元素和最小元素,关联容器不提供front、push_front、pop_front、back、push_back、以及pop_back操作。
标准的STL关联容器分为set(集合)和map(映射)两大类,以及这两大类的衍生体multiset(多键集合)和multimap(多键映射表)。这些容器的底层机制均以RB-tree完成(红黑树)。
2、关联容器与顺序容器的公共操作
1、关联容器与顺序容器共享的构造函数
关联容器共享大部分顺序容器的操作,但不是全部,关联容器可以使用以下三个构造函数:
Cc;
创建一个名为 c 的空容器。C 是容器类型名,如 vector,T 是元素类型,如 int 或 string。适用于所有容器。
Cc(c2);
创建容器 c2 的副本 c;c 和 c2 必须具有相同的容器类型,并存放相同类型的元素。适用于所有容器。
Cc(b, e);
创建 c,其元素是迭代器 b 和 e 标示的范围内元素的副本。适用于所有容器。
2、关联容器与顺序容器共享的其他函数
关联容器不能通过容器的大小来定义,因为这样的话就无法知道键所对应的值是什么了。
关联容器支持顺序容器的一些关系操作符。
关联容器支持begin、end、rbegin、rend操作。
关联容器支持swap和赋值操作,但不提供assign函数。
关联容器支持clear和erase函数,但关联容器的erase运算返回的是void类型。
关联容器支持size()、max_size()、empty()函数作为容器大小的操作,但不支持resize()函数。
3、对组pair类型提供的操作
对组pair包含两个数据值。具体的使用方法如下:
pairp1;
创建一个空的pair对象,它的两个元素分别是T1和T2类型,采用值初始化。
pairp1(v1, v2);
创建一个pair对象,它的两个元素分别是T1和T2类型,其中first成员初始化为v1,second成员初始化为v2。
make_pair(v1, v2);
以v1和v2值创建一个新的pair对象,其元素的类型分别是v1和v2的类型。
p1 < p2;
两个pair对象之间的小于运算,其定义遵循字典次序:如果p1.first
!(p2.first
p1 == p2;
如果两个pair对象的first成员和second成员依次相等,则这两个对象相等,该运算使用其元素的==操作符。
p.first、p.second;
返回p中名为first、second的公有数据成员。
4、pair的创建和初始化
在创建pair对象时,必须提供两个类型名,pair对象的两个数据成员各自对应一个,这两个类型名可以不同。如果在创建pair对象时不提供显示初始化,则调用默认构造函数对其成员进行初始化;也可以在创建对象时使用( )直接显示初始化式:
- pair<类型1, 类型2> 对象名;
如果使用多个相同的pair对象,也可以使用typedef简化其声明:
typedef pairAuthor; Author 对象名(初始值1,初始值2);
对于pair类可以直接访问其数据成员,其成员都是公有的,分别命名为first成员和second成员,使用点操作符即可访问。
感谢你能够认真阅读完这篇文章,希望小编分享的“C++_STL常用容器有哪些”这篇文章对大家有帮助,同时也希望大家多多支持创新互联,关注创新互联行业资讯频道,更多相关知识等着你来学习!
本文题目:C++_STL常用容器有哪些
网址分享:http://scyanting.com/article/phdcog.html