0

0

C++_STL常用容器总结:对组pair中关联容器与顺序容器

php是最好的语言

php是最好的语言

发布时间:2018-07-28 11:31:12

|

2771人浏览过

|

来源于php中文网

原创

对组pair

在这部分,我们先介绍一下对组pair中关联容器与顺序容器的公共操作,之后再介绍常用的几个具体的关联容器。

1、关联容器

关联容器是存储对象集合的类型,支持通过键的高效查询。关联容器的大部分行为与顺序容器相同,二者的本质区别在于关联容器通过键存储和读取元素,而顺序容器是通过元素在容器中的位置顺序存储和访问元素。 
关联容器的每个元素包含一个键值(key)和一个实值(value)。当元素被插入到关联容器中时,容器内部数据结构便依照其键值大小,以某种特定规则将这个元素放置于适当位置。关联容器没有所谓的头尾,只有最大元素和最小元素,关联容器不提供front、push_front、pop_front、back、push_back、以及pop_back操作。 
标准的STL关联容器分为set(集合)和map(映射)两大类,以及这两大类的衍生体multiset(多键集合)和multimap(多键映射表)。这些容器的底层机制均以RB-tree完成(红黑树)。

2、关联容器与顺序容器的公共操作

1、关联容器与顺序容器共享的构造函数

关联容器共享大部分顺序容器的操作,但不是全部,关联容器可以使用以下三个构造函数:

C c;

创建一个名为 c 的空容器。C 是容器类型名,如 vector,T 是元素类型,如 int 或 string。适用于所有容器。

C c(c2);

创建容器 c2 的副本 c;c 和 c2 必须具有相同的容器类型,并存放相同类型的元素。适用于所有容器。

C c(b, e);

创建 c,其元素是迭代器 b 和 e 标示的范围内元素的副本。适用于所有容器。

2、关联容器与顺序容器共享的其他函数

  1. 关联容器不能通过容器的大小来定义,因为这样的话就无法知道键所对应的值是什么了。

  2. 关联容器支持顺序容器的一些关系操作符。

  3. 关联容器支持begin、end、rbegin、rend操作。

  4. 关联容器支持swap和赋值操作,但不提供assign函数。

  5. 关联容器支持clear和erase函数,但关联容器的erase运算返回的是void类型。

  6. 关联容器支持size()、max_size()、empty()函数作为容器大小的操作,但不支持resize()函数。

3、对组pair类型提供的操作

对组pair包含两个数据值。具体的使用方法如下:

pair p1;

创建一个空的pair对象,它的两个元素分别是T1和T2类型,采用值初始化。

pair p1(v1, v2);

创建一个pair对象,它的两个元素分别是T1和T2类型,其中first成员初始化为v1,second成员初始化为v2。

抠抠图
抠抠图

免费在线AI智能批量抠图,AI图片编辑,智能印花提取。

下载
make_pair(v1, v2);

以v1和v2值创建一个新的pair对象,其元素的类型分别是v1和v2的类型。

p1 < p2;

两个pair对象之间的小于运算,其定义遵循字典次序:如果p1.first或者!(p2.first,返回true。

p1 == p2;

如果两个pair对象的first成员和second成员依次相等,则这两个对象相等,该运算使用其元素的==操作符。

p.first、p.second;

返回p中名为first、second的公有数据成员。

4、pair的创建和初始化

在创建pair对象时,必须提供两个类型名,pair对象的两个数据成员各自对应一个,这两个类型名可以不同。如果在创建pair对象时不提供显示初始化,则调用默认构造函数对其成员进行初始化;也可以在创建对象时使用( )直接显示初始化式: 
- pair 对象名;

如果使用多个相同的pair对象,也可以使用typedef简化其声明:

typedef  pair   Author;
Author 对象名(初始值1,初始值2);

对于pair类可以直接访问其数据成员,其成员都是公有的,分别命名为first成员和second成员,使用点操作符即可访问。

相关文章:

c++ STL标准容器之Iterator使用

c++复习要点总结z之十二——STL string

相关视频:

C# 教程

相关专题

更多
高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

4

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

3

2026.01.16

C++ 单元测试与代码质量保障
C++ 单元测试与代码质量保障

本专题系统讲解 C++ 在单元测试与代码质量保障方面的实战方法,包括测试驱动开发理念、Google Test/Google Mock 的使用、测试用例设计、边界条件验证、持续集成中的自动化测试流程,以及常见代码质量问题的发现与修复。通过工程化示例,帮助开发者建立 可测试、可维护、高质量的 C++ 项目体系。

10

2026.01.16

java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

33

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

15

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

42

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

9

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

6

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 2.6万人学习

ECMAScript6 / ES6---十天技能课堂
ECMAScript6 / ES6---十天技能课堂

共25课时 | 1.9万人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号