1. 介绍
- #include
- map存储的是关键字-值对(key-value);提供基于key的快速检测能力。
- map中key是唯一的,集合根据key值进行排序(< 的比较方式)
- map中存储的key值的类型,默认使用 小于的比较方式(升序);如果是保存自定义的类型,需要传入自定义的比较规则函数
- map是由红黑树变体的平衡二叉树的数据结构实现的
- 可以使用 [] 操作符访问key对应的value
- map的key是const类型的,不能对其修改
multimap与map的区别:
- map的key是唯一的,而multimap的key可以重复
- 由于multimap的key是可重复,即存在一对多的关系,因此不能使用 [] 操作符进行访问,即multimap不支持随机访问
2. 额外类型说明
关联容器定义了几种额外的类型,如下是map中这些类型的含义:
注意value_type对应的含义与其他类型的区别
类型名 | 含义 |
---|---|
key_type | 表示map中关键字(key)的类型 |
mapped_type | 表示map中对应的值(value)的类型 |
value_type | 表示map中一条数据的类型,即 pair<const key_type, mapped_type>,存放的键值对 |
注:pair类型讲解在以下链接中 https://blog.csdn.net/readyone/article/details/111491928
3. map/multimap的构造函数
默认构造方式:根据对应类型默认初始化
map<T1,T2> map1;
multimap<T1,T2> multimap1;
示例:
map<string, string> map_s;
multimap<string, int> map_si;
拷贝构造和赋值:
- map(const map &mp); // 拷贝构造函数
- map& operator=(const map &mp); //重载等号操作符
- map.swap(mp); //交换两个集合
示例:
map<string, string> map1 = {
{
"jiek", "dfe"},
{
"dfei", "ieo"}};
map<string, string> map2