介绍一下unordered_map的用法
时间: 2023-05-20 07:02:48 浏览: 45
unordered_map是C++ STL中的一个关联容器,它提供了一种将键映射到值的方法。它使用哈希表来实现,因此查找和插入操作的时间复杂度为O(1)。使用unordered_map时,需要包含头文件<unordered_map>。以下是unordered_map的用法示例:
// 创建一个unordered_map对象
unordered_map<string, int> myMap;
// 插入键值对
myMap["apple"] = 1;
myMap["banana"] = 2;
myMap["orange"] = 3;
// 查找键对应的值
int value = myMap["apple"]; // value = 1
// 遍历unordered_map
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
cout << it->first << " : " << it->second << endl;
}
// 删除键值对
myMap.erase("banana");
注意:unordered_map中的键必须是唯一的,如果插入一个已经存在的键,则会覆盖原有的值。
相关问题
解释一下unordered_map的用法
unordered_map是C++标准库中的一个容器,它提供了一种键值对的映射关系。它的用法类似于字典,可以通过键来快速查找对应的值。
unordered_map的特点是无序存储,即元素的存储顺序与插入顺序无关。这使得unordered_map在查找、插入和删除操作上具有较高的效率。
下面是unordered_map的一些常用用法:
1. 创建unordered_map对象:
```
std::unordered_map<KeyType, ValueType> myMap;
```
2. 插入键值对:
```
myMap.insert(std::make_pair(key, value));
```
3. 访问元素:
```
ValueType value = myMap[key];
```
4. 修改元素:
```
myMap[key] = newValue;
```
5. 删除元素:
```
myMap.erase(key);
```
6. 判断元素是否存在:
```
if (myMap.find(key) != myMap.end()) {
// 元素存在
}
```
7. 遍历unordered_map:
```
for (const auto& pair : myMap) {
KeyType key = pair.first;
ValueType value = pair.second;
// 处理键值对
}
```
8. 获取unordered_map的大小:
```
std::size_t size = myMap.size();
```
9. 清空unordered_map:
```
myMap.clear();
```
c++哈希表unordered_set unordered_map用法
unordered_set和unordered_map都是C++ STL中的哈希表容器,它们的用法如下:
unordered_set用法:
```c++
#include <unordered_set>
using namespace std;
int main() {
unordered_set<int> s; // 定义一个空的unordered_set
s.insert(1); // 插入元素1
s.insert(2); // 插入元素2
s.insert(3); // 插入元素3
s.erase(2); // 删除元素2
if (s.find(1) != s.end()) { // 查找元素1
cout << "Found!" << endl;
}
for (auto x : s) { // 遍历unordered_set
cout << x << " ";
}
return 0;
}
```
unordered_map用法:
```c++
#include <unordered_map>
using namespace std;
int main() {
unordered_map<string, int> m; // 定义一个空的unordered_map
m["apple"] = 1; // 插入键值对"apple":1
m["banana"] = 2; // 插入键值对"banana":2
m["orange"] = 3; // 插入键值对"orange":3
m.erase("banana"); // 删除键为"banana"的键值对
if (m.find("apple") != m.end()) { // 查找键为"apple"的值
cout << "Found!" << endl;
}
for (auto p : m) { // 遍历unordered_map
cout << p.first << ":" << p.second << " ";
}
return 0;
}
```