std::map
是C++标准库中的一个关联容器,用于存储键值对(key-value pairs)。它的特性和用途如下:
-
键值对存储:
std::map
是一种关联容器,每个元素都由一个唯一的键(key)和一个值(value)组成。键用于标识数据的唯一性,值是与键相关联的数据。std::map<int, std::string> myMap; myMap[1] = "Apple"; myMap[2] = "Banana";
-
有序性:
std::map
自动按照键的升序排序存储元素,因此每次插入新元素时,元素会根据键的排序规则(默认使用operator<
)放入适当位置。 -
键的唯一性:在
std::map
中,每个键都是唯一的,重复的键不会插入。如果尝试插入具有相同键的元素,新的值会覆盖原来的值。 -
底层实现:
std::map
通常基于红黑树等自平衡二叉搜索树实现,因此查找、插入和删除操作的时间复杂度为 (O(\log n)),适合频繁查找和排序的场景。 -
常用操作:
- 插入元素:使用
insert()
、operator[]
、或emplace()
方法。 - 访问元素:使用
operator[]
或at()
方法。 - 查找元素:使用
find()
方法。 - 删除元素:使用
erase()
方法。
- 插入元素:使用
例子
#include <iostream>
#include <map>
#include <string>
int main() {
std::map<int, std::string> myMap;
// 插入元素
myMap[1] = "Apple";
myMap[3] = "Cherry";
myMap[2] = "Banana";
// 遍历并输出元素
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
// 查找元素
auto it = myMap.find(2);
if (it != myMap.end()) {
std::cout << "Found: " << it->second << std::endl;
}
return 0;
}
输出结果
1: Apple
2: Banana
3: Cherry
Found: Banana
在此例子中,myMap
中的元素根据键值自动排序,因此遍历时按键的升序输出。