Contents

【STL】map容器用法

1 简介

🟠 map 容器中键值对的键和值可以是任意数据类型,包括 C++ 基本数据类型(int、double 等)、使用结构体或类自定义的类型。

🟡 容器会自动根据各键值对的键的大小,按照既定的规则进行排序。比如 std::less<T>std::greater<T> 规则。

🟢 键的值既不能重复也不能被修改。

🔵 使用需加上头文件:#include <map>

2 创建map容器

1️⃣ 调用 map 容器类的默认构造函数。(若默认指定了 std 命令空间,则 std:: 可省略)

1
std::map<std::string, int> map1;

2️⃣ 在创建 map 容器的同时,进行初始化。

1
std::map<std::string, int> map1 { {"语文",90} , {"数学",100} };

3️⃣ 利用先前已创建好的 map 容器和拷贝构造函数,再创建一个新的 map 容器。

1
std::map<std::string, int> newMap(map1);

4️⃣ 通过迭代器,取已建 map 容器中指定区域内的键值对,创建并初始化新的 map 容器。

1
2
std::map<std::string, int> map1 { {"语文",90} , {"数学",100} };
std::map<std::string, int> newMap(++map1.begin(), map1.end());

3 常用的成员方法

成员方法 功能
begin() 返回指向容器中第一个键值对的双向迭代器。(是已排好序的第一个)
end() 返回指向容器最后一个元素所在位置后一个位置的双向迭代器。(是已排好序的最后一个)
find(key) 在 map 容器中查找键为 key 的键值对,如果成功找到,则返回指向该键值对的双向迭代器;否则返回和 end() 方法一样的迭代器。
empty() 若容器为空,则返回 true;否则 false。
size() 返回当前 map 容器中存有键值对的个数。
insert() 向 map 容器中插入键值对。
erase() 删除 map 容器指定位置、指定键(key)值或者指定区域内的键值对。
clear() 清空 map 容器中所有的键值对,即使 map 容器的 size() 为 0。
emplace() 在当前 map 容器中的指定位置处构造新键值对。其效果和插入键值对一样,但效率更高。
count(key) 在当前 map 容器中,查找键为 key 的键值对的个数并返回。注意,由于 map 容器中各键值对的键的值是唯一的,因此该函数的返回值最大为 1。
count(key) 在容器中查找以 key 键的键值对的个数。

4 其他容器

unordered_map 容器

🟠 该容器内部不会自行对存储的键值对进行排序,其余用法和 map 类似。

🟡 使用需加上头文件: #include <unordered_map>