1.前言
紧接前面章节的序列化容器,本章开始讲解STL中的关联式容器。
关联式容器与上面的序列式容器最大的区别就是,序列式容器是按顺序的存储所有元素,访问元素的方式是通过下标,或遍历。
而关联式容器则采用给每一个值分配一个键,我们访问元素的方式就是直接通过键,就能得到它的值,总结来说就是,关联式容器存储的是一个键值对,而序列式容器只存储值。
2.pair
在了解各个关联式容器之前, 我们必须来看一看各个容器存储的基本单元:键值对
,即这里介绍的pair
。
它的使用方法非常简单:
#include<iostream>
#include<utility> //pair所在头文件
using namespace std;
int main() {
pair<int, string> p;
p.first = 10;
p.second = "csdn";
}
首先我们需要理解一下它的实现过程。
因为它是用来存储两个变量的,所以它的模板参数有两个,分别指定即可,其中第一个为键 的类型,第二个为值的类型,我这里指定的键为int
,值为string
类型。
然后我们就可以直接通过它的first
属性与second
属性来分别给键与值进行赋值。
这基本就是它的所有用法,但如果在容器中添加一个pair
元素,每次都这样写的话,还是有点麻烦的。
所以可以直接初始化:
pair<int, string> p{10,"www.kucoding.com"};
为了更加便捷的生成一个pair
,还提供了一个函数来生成pair
:
make_pair<int, string>(10, "www.kucoding.com");
它可以直接返回一个生成好的pair
,类型为int
与string
组成的键值对。
但还是太长了, 所以我们还可以进一步简化: