unordered_map 是 C++ 标准模板库(STL)中的一个关联容器,它使用哈希表来存储键值对。与 map 不同,unordered_map 不保证元素的顺序,其元素的迭代顺序可能会在每次插入或删除操作后改变。以下是 unordered_map 的一些关键特性和操作:
- 基于哈希:unordered_map 使用哈希表来存储元素,这意味着它通过哈希函数将键映射到哈希表中的一个位置。
- 键的唯一性:每个键在 unordered_map 中必须是唯一的。
- 快速访问:提供平均时间复杂度为 O(1) 的查找、插入和删除操作。
- 迭代器:unordered_map 提供了迭代器,可以遍历所有元素。
- 构造与初始化:可以默认构造一个空的 unordered_map,也可以通过初始化列表或范围来初始化它。
- 大小操作:可以查询 unordered_map 的大小,即它包含的键值对数量。
- 插入操作:可以插入一个键值对,或者通过范围来插入多个键值对。
- 删除操作:可以根据键或者迭代器来删除元素。
- 查找操作:可以使用键来查找对应的值,返回的是对应键值对的迭代器。
- 哈希函数和键比较函数:unordered_map 使用用户提供的哈希函数和键比较函数来管理元素。
下面是一个简单的 unordered_map 使用示例: #include <iostream>
#include <unordered_map>
int main() {
// 创建一个 unordered_map
std::unordered_map<int, std::string> um;
// 插入元素
um[1] = "one";
um[2] = "two";
um[3] = "three";
// 遍历 unordered_map
for (const auto& pair : um) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
// 根据键查找元素
auto it = um.find(2);
if (it != um.end()) {
std::cout << "Found: " << it->second << std::endl;
}
// 删除一个元素
um.erase(it);
// 根据键删除元素
um.erase(1);
return 0;
}
请注意,unordered_map 的性能很大程度上依赖于哈希函数的质量。一个好的哈希函数可以均匀地分布键,减少哈希冲突,从而提高性能。此外,unordered_map 不保证元素的迭代顺序,因此如果你需要元素的特定顺序,应该使用 map 而不是 unordered_map 。
(责任编辑:admin) |