C++_STL常用容器总结:对组pair中关联容器与顺序容器
对组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<T> c;
1
创建一个名为 c 的空容器。C 是容器类型名,如 vector,T 是元素类型,如 int 或 string。适用于所有容器。
C<T> c(c2);
1
创建容器 c2 的副本 c;c 和 c2 必须具有相同的容器类型,并存放相同类型的元素。适用于所有容器。
C<T> c(b, e);
1
创建 c,其元素是迭代器 b 和 e 标示的范围内元素的副本。适用于所有容器。
2、关联容器与顺序容器共享的其他函数
关联容器不能通过容器的大小来定义,因为这样的话就无法知道键所对应的值是什么了。
关联容器支持顺序容器的一些关系操作符。
关联容器支持begin、end、rbegin、rend操作。
关联容器支持swap和赋值操作,但不提供assign函数。
关联容器支持clear和erase函数,但关联容器的erase运算返回的是void类型。
关联容器支持size()、max_size()、empty()函数作为容器大小的操作,但不支持resize()函数。
3、对组pair类型提供的操作
对组pair包含两个数据值。具体的使用方法如下:
pair<T1, T2> p1;
1
创建一个空的pair对象,它的两个元素分别是T1和T2类型,采用值初始化。
pair<T1, T2> p1(v1, v2);
1
创建一个pair对象,它的两个元素分别是T1和T2类型,其中first成员初始化为v1,second成员初始化为v2。
make_pair(v1, v2);
1
以v1和v2值创建一个新的pair对象,其元素的类型分别是v1和v2的类型。
p1 < p2;
1
两个pair对象之间的小于运算,其定义遵循字典次序:如果p1.first<p2.first
或者!(p2.first<p1.first)&&p1.second<p2.second
,返回true。
p1 == p2;
1
如果两个pair对象的first成员和second成员依次相等,则这两个对象相等,该运算使用其元素的==操作符。
p.first、p.second;
1
返回p中名为first、second的公有数据成员。
4、pair的创建和初始化
在创建pair对象时,必须提供两个类型名,pair对象的两个数据成员各自对应一个,这两个类型名可以不同。如果在创建pair对象时不提供显示初始化,则调用默认构造函数对其成员进行初始化;也可以在创建对象时使用( )直接显示初始化式:
- pair<类型1, 类型2> 对象名;
如果使用多个相同的pair对象,也可以使用typedef简化其声明:
typedef pair <string, string> Author; Author 对象名(初始值1,初始值2);
1
2
对于pair类可以直接访问其数据成员,其成员都是公有的,分别命名为first成员和second成员,使用点操作符即可访问。
相关文章:
相关视频:
以上是C++_STL常用容器总结:对组pair中关联容器与顺序容器的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

C语言中通过转义序列处理特殊字符,如:\n表示换行符。\t表示制表符。使用转义序列或字符常量表示特殊字符,如char c = '\n'。注意,反斜杠需要转义两次。不同平台和编译器可能有不同的转义序列,请查阅文档。

在 C 语言中,char 类型在字符串中用于:1. 存储单个字符;2. 使用数组表示字符串并以 null 终止符结束;3. 通过字符串操作函数进行操作;4. 从键盘读取或输出字符串。

在 C 语言中,char 和 wchar_t 的主要区别在于字符编码:char 使用 ASCII 或扩展 ASCII,wchar_t 使用 Unicode;char 占用 1-2 个字节,wchar_t 占用 2-4 个字节;char 适用于英语文本,wchar_t 适用于多语言文本;char 广泛支持,wchar_t 依赖于编译器和操作系统是否支持 Unicode;char 的字符范围受限,wchar_t 的字符范围更大,并使用专门的函数进行算术运算。

C 语言中符号的使用方法涵盖算术、赋值、条件、逻辑、位运算符等。算术运算符用于基本数学运算,赋值运算符用于赋值和加减乘除赋值,条件运算符用于根据条件执行不同操作,逻辑运算符用于逻辑操作,位运算符用于位级操作,特殊常量用于表示空指针、文件结束标记和非数字值。

多线程和异步的区别在于,多线程同时执行多个线程,而异步在不阻塞当前线程的情况下执行操作。多线程用于计算密集型任务,而异步用于用户交互操作。多线程的优势是提高计算性能,异步的优势是不阻塞 UI 线程。选择多线程还是异步取决于任务性质:计算密集型任务使用多线程,与外部资源交互且需要保持 UI 响应的任务使用异步。

在 C 语言中,char 类型转换可以通过:强制类型转换:使用强制类型转换符将一种类型的数据直接转换为另一种类型。自动类型转换:当一种类型的数据可以容纳另一种类型的值时,编译器自动进行转换。

C语言中没有内置求和函数,需自行编写。可通过遍历数组并累加元素实现求和:循环版本:使用for循环和数组长度计算求和。指针版本:使用指针指向数组元素,通过自增指针遍历高效求和。动态分配数组版本:动态分配数组并自行管理内存,确保释放已分配内存以防止内存泄漏。

char 数组在 C 语言中存储字符序列,声明为 char array_name[size]。访问元素通过下标运算符,元素以空终止符 '\0' 结尾,用于表示字符串终点。C 语言提供多种字符串操作函数,如 strlen()、strcpy()、strcat() 和 strcmp()。
