当前位置: 代码迷 >> 综合 >> 标准库——关联容器 map、set、multimap、multiset
  详细解决方案

标准库——关联容器 map、set、multimap、multiset

热度:61   发布时间:2023-10-15 17:51:15.0

关于标准库中sring、char、vector、set、map、queue、stack、bitset等,方法有些记不清楚,每次用每次查,很费时间,干脆自己整理一下,记不住的时候,查询更方便。

关联容器:支持通过键来高效地查找和读取元素。包括:map,set,其中,map:键-值,set:键。

map 是 map<键, 值> 对的 集合,可以使用键作为下标来获取一个值。

关联容器类型

标准库——关联容器 map、set、multimap、multiset

标准库——pair类型

包含在 #include<utility>头文件中,其操作如下:

标准库——关联容器 map、set、multimap、multiset

map<int, int> m;
int val = 1;
int key = 2;
// 方法1
m.insert(make_pair(key, val));
// 方法2,直接插入
m[key] = val;

map的构造函数

标准库——关联容器 map、set、multimap、multiset

键类型,严格弱排序!,即键的数据类型,为 < 关系, 插入键值对时,也是严格的排序。

map类定义的类型

标准库——关联容器 map、set、multimap、multiset

map容器提供的insert操作

标准库——关联容器 map、set、multimap、multiset

// 方法1
word_count.insert(map<string, int>::value_type("Anna", 1));
// 方法2(key, val);
word_count.insert(make_pair("Anna", 1));
// 方法3
typedef map<string, int>::value_type valType;
word_count.insert(valType("Anna", 1));

不修改map对象的查询操作

标准库——关联容器 map、set、multimap、multiset

标准库——关联容器 map、set、multimap、multiset

count成员的返回值,只能是0或1. 最好不要用下标查询,是否某个键存在,因为如果不存在,会把value+1,得出错误结果。

从map对象中删除元素

标准库——关联容器 map、set、multimap、multiset

map对象的迭代遍历

map<string, int>::const_iterator map_it = word_count.begin();
while(map_it != word_count.end())
{cout << map_it->first << "occurs " << map_it->second << " times "  << endl;++map_it;    // 指向下一组元素
}

set——链接

https://blog.csdn.net/qq_34732729/article/details/100582187