C++ 中 unordered_map
类型是一个关联容器,它通过哈希表实现,提供了快速的键值对(key-value pair)插入、查找和删除操作。以下是 unordered_map 的一些基本操作:
-
插入元素:
insert
函数:
Cpp// 通过 pair 插入 std::unordered_map<std::string, int> m; m.insert(std::make_pair("apple", 1)); m.insert({ "banana", 2 }); // 直接用下标方式插入(如果键不存在则插入) m["cherry"] = 3;
-
查找元素:
-
Cppfind
函数返回一个迭代器指向所查找键对应的元素,如果找不到,则返回 end()。auto it = m.find("apple"); if (it != m.end()) { std::cout << it->second; // 输出对应值 }
-
count
函数返回给定键出现的次数(由于是键值对,所以通常是0或1)。
-
-
修改元素:
- 使用下标直接修改已存在的键对应的值。
Cppm["apple"] = 4; // 修改 apple 对应的值为 4
- 使用下标直接修改已存在的键对应的值。
-
擦除元素:
erase
函数用于移除指定键或指定位置的元素。
Cppm.erase("apple"); // 删除键为 "apple" 的元素 m.erase(it); // 删除由迭代器 it 指向的元素
-
大小与容量:
size()
返回当前容器中元素的数量。empty()
检查容器是否为空。max_size()
返回容器可容纳的最大元素数量。- 可以使用
reserve()
预先分配存储空间。
-
迭代:
- 可以通过迭代器遍历容器中的所有元素。
Cppfor (const auto& entry : m) { std::cout << entry.first << ": " << entry.second << '\n'; }
- 可以通过迭代器遍历容器中的所有元素。
-
其他操作:
clear()
清空整个容器。- 还有一些集合相关的成员函数如
begin()
,end()
,以及 C++11 后引入的cbegin()
,cend()
等常量迭代器版本。
-
赋值与移动:
- 赋值操作:
unordered_map& operator=(const unordered_map&)
复制赋值。 - 移动操作:C++11 引入了右值引用后,
unordered_map& operator=(unordered_map&&)
用于移动赋值。
- 赋值操作:
以上就是 C++ unordered_map
基本操作的一部分,实际使用中可能还会涉及到构造函数、比较函数、哈希函数等相关操作。