std::map是基于红黑树实现的,它会对键进行排序,因此键值对是有序的。 std::unordered_map是基于哈希表实现的,它不保证键值对的顺序,但在许多情况下,查找、插入和删除的性能更好。
std::map使用方式和其他有序容器类似,插入的键值对会按键的顺序排列。 std::unordered_map 则是通过哈希函数来组织数据,键的顺序并不重要
#include < iostream>
#include <unordered_map>
int main()
{
// 创建一个 std::unordered_map,键是字符串,值是整数
std::unordered_map<std::string, int> myMap;
// 插入键值对
myMap[“一”] = 1;
myMap[“二”] = 2;
myMap[“三”] = 3;
// 访问元素
std::cout << “键 'two'的值:” << myMap[“two”] << std::endl;
// 遍历 unordered_map
for(const auto &pair : myMap)
{
std::cout << “Key: ” << pair.first << “, Value: ” << pair.second << std::endl;
}
// 检查某个键是否存在
if(myMap.find(“四”) != myMap.end())
{
std::cout << “找到密钥 '四'。” << std::endl;
}
else
{
std::cout << “找不到密钥 '四'。” << std::endl;
}
// 返回 0;
}
#include <iostream>
#include <unordered_map>
#include <string>
int main() {
// 声明一个带有字符串键和整数值的无序映射
std::unordered_map<std::string, int> myMap;
// 插入键值对到映射中
myMap["apple"] = 3;
myMap["banana"] = 2;
myMap["orange"] = 5;
// 使用键访问值
std::cout << "苹果的数量:" << myMap["apple"] << std::endl;
// 检查映射中是否存在某个键
if (myMap.find("banana") != myMap.end()) {
std::cout << "香蕉存在!" << std::endl;
}
// 遍历映射中的所有键值对
for (const auto& pair : myMap) {
std::cout << "键:" << pair.first << ",值:" << pair.second << std::endl;
}
// 修改与键关联的值
myMap["apple"] = 7;
// 删除一个键值对
myMap.erase("banana");
// 检查映射是否为空
if (myMap.empty()) {
std::cout << "映射为空。" << std::endl;
}
// 获取映射的大小
std::cout << "映射的大小:" << myMap.size() << std::endl;
return 0;
}