unordered_map 是 C++ 标准模板库(STL)中的一个关联容器,它用于存储键值对,其中每个键都是唯一的。与 map 不同,unordered_map 不保证元素按照键的顺序排列,而是基于哈希表实现,这使得它在平均情况下对于查找、插入和删除操作具有常数时间复杂度 O(1)。以下是关于 unordered_map 详细的用法介绍:
1. 包含头文件
在使用 unordered_map 之前,需要包含相应的头文件:
#include
2. 定义和初始化
可以使用多种方式定义和初始化 unordered_map:
#include
#include
#include
int main() {
// 定义一个空的 unordered_map,键为 string 类型,值为 int 类型
std::unordered_map myMap;
// 初始化时插入元素
std::unordered_map myMap2 = {
{"apple", 1},
{"banana", 2},
{"cherry", 3}
};
return 0;
}
3. 插入元素
可以使用以下几种方式向 unordered_map 中插入元素:
#include
#include
#include
int main() {
std::unordered_map myMap;
// 使用 insert 函数插入元素
myMap.insert({"apple", 1});
// 使用 [] 运算符插入元素,如果键不存在则创建新元素
myMap["banana"] = 2;
// 使用 emplace 函数插入元素,效率更高
myMap.emplace("cherry", 3);
return 0;
}
4. 访问元素
可以使用 [] 运算符或 at() 函数来访问 unordered_map 中的元素:
#include
#include
#include
int main() {
std::unordered_map myMap = {
{"apple", 1},
{"banana", 2},
{"cherry", 3}
};
// 使用 [] 运算符访问元素,如果键不存在会插入一个默认值
std::cout
5. 查找元素
可以使用 find() 函数来查找 unordered_map 中是否存在某个键:
#include
#include
#include
int main() {
std::unordered_map myMap = {
{"apple", 1},
{"banana", 2},
{"cherry", 3}
};
auto it = myMap.find("banana");
if (it != myMap.end()) {
std::cout second
6. 删除元素
可以使用 erase() 函数来删除 unordered_map 中的元素:
#include
#include
#include
int main() {
std::unordered_map myMap = {
{"apple", 1},
{"banana", 2},
{"cherry", 3}
};
// 删除指定键的元素
myMap.erase("banana");
// 删除迭代器指向的元素
auto it = myMap.find("cherry");
if (it != myMap.end()) {
myMap.erase(it);
}
return 0;
}
7. 遍历元素
可以使用范围 for 循环或迭代器来遍历 unordered_map 中的元素:
#include
#include
#include
int main() {
std::unordered_map myMap = {
{"apple", 1},
{"banana", 2},
{"cherry", 3}
};
// 使用范围 for 循环遍历
for (const auto& pair : myMap) {
std::cout first second
8. 其他常用函数
通过上述介绍,你应该对 unordered_map 的基本用法有了较为全面的了解,可以根据具体需求灵活运用它来解决实际问题。
-
size():返回unordered_map中元素的数量。 -
empty():检查unordered_map是否为空。 -
clear():清空unordered_map中的所有元素。 -
#include #include #include int main() { std::unordered_map myMap = { {"apple", 1}, {"banana", 2}, {"cherry", 3} }; std::cout注意事项
-
unordered_map的键类型必须定义了==运算符,因为哈希表需要比较键是否相等。 - 哈希函数和相等比较函数可以自定义,以满足特殊需求。例如,当键是自定义类型时,需要提供自定义的哈希函数和相等比较函数。
文章来源于互联网:C++中的unordered_map容器(本文搬运AI写作)
相关推荐: stable diffusion最推荐安装的几个模型
stable diffusion(稳定扩散)(简称SD)正在席卷世界,让任何人都可以使用各种风格的人工智能技术生成图像。只需点击几个按钮,您就可以生成一个人的照片级真实感图像,或一幅高精度的风景数字插图。通过使用精心制作的提示和特定的训练模型,您可以创建可用于…
5bei.cn大模型教程网










