map的实现基于红黑树,因此它的插入、删除和查找操作的时间复杂度都是O(log n)。
-
用法:
- 包含头文件:
#include <map>
- 定义一个map:
std::map<KeyType, ValueType> mapName;
,其中KeyType是键的类型,ValueType是值的类型。 - 插入元素:
mapName[key] = value;
或者mapName.insert(std::make_pair(key, value));
- 访问元素:
mapName[key];
或者(*mapName.find(key)).second;
- 删除元素:
mapName.erase(key);
- 遍历元素:使用迭代器或范围for循环。
- 包含头文件:
-
注意事项:
- map的键必须支持比较操作,例如可以使用整数、浮点数、字符串等作为键。
- map的键是唯一的,如果插入相同的键,新的值会覆盖旧的值。
- map中的元素是按键排序的,所以不能保证插入顺序与遍历顺序相同。
- 使用
mapName[key]
访问元素时,如果键不存在,会自动插入一个具有该键的元素,并将其值初始化为默认值。为了避免不必要的插入,可以先使用mapName.find(key)
检查键是否存在。 - 当需要同时访问键和值时,可以使用
std::map<KeyType, ValueType>::iterator
类型的迭代器,通过iter->first
访问键,iter->second
访问值。