C++ unordered_map
1.unordered_map 定义
unordered_map是 C++ 标准库中的一个容器,它是基于哈希表实现的键值对存储结构。与 unordered_set 类似,unordered_map 提供了快速的查找、插入和删除操作,但它存储的是键值对(key-value)。由于基于哈希表实现,unordered_map 的键是无序的,查找和插入的时间复杂度在平均情况下为 O(1)。
2.unordered_map 的特点:
- 键值对(key-value)结构:每个元素由一个键和一个对应的值组成,键是唯一的,而值可以是相同的。
- 无序存储:键值对的存储顺序没有特定规律,是无序的。
- 基于哈希表:通过哈希函数实现键的映射和查找操作,查找、插入和删除的平均时间复杂度为 O(1)。
- 不允许重复的键:每个键是唯一的,如果插入一个已存在的键,新的值会覆盖旧的值。
3.常用成员函数和操作:
构造函数:
unordered_map<string, int> my_map;:创建一个空的 unordered_map,键为 string 类型,值为 int 类型。unordered_map<int, string> my_map{{1, "one"}, {2, "two"}};:使用初始化列表初始化一个 unordered_map。unordered_map<int, string> my_map(another_map.begin(), another_map.end());:使用另一个容器的迭代器范围构造一个 unordered_map。
插入元素:
my_map[key] = value;:插入或更新键为 key,值为 value 的键值对。如果 key 已存在,则更新其值。my_map.insert({key, value});:插入键值对 {key, value}。如果 key 已存在,则不会插入。
访问元素:
my_map[key]:返回键为 key 的值。如果 key 不存在,会插入一个默认值。my_map.at(key):返回键为 key 的值,但如果 key 不存在,则会抛出异常。
查找元素:
my_map.find(key);:查找键为 key 的元素,返回一个指向该元素的迭代器。如果不存在,返回 my_map.end()。my_map.count(key);:返回键为 key 的数量,若存在返回 1,若不存在返回 0。删除元素:
my_map.erase(key);:删除键为 key 的元素,如果存在则删除,返回 1,否则返回 0。my_map.erase(it);:删除迭代器 it 所指向的元素。
大小和容量:
my_map.size();:返回 unordered_map 中键值对的数量。my_map.empty();:判断 unordered_map 是否为空。
遍历元素:for (const auto& pair : my_map) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 宇宙尽头的森林!