如何遍历一个 unordered_map?
时间: 2023-11-01 21:59:35 浏览: 91
要遍历一个 unordered_map,你可以使用迭代器来访问其中的每个键值对。以下是一种常用的方法:
```c++
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<int, std::string> myMap = {{1, "one"}, {2, "two"}, {3, "three"}};
// 使用迭代器遍历 unordered_map
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}
return 0;
}
```
在上面的代码中,我们首先创建了一个 unordered_map `myMap`,其中包含一些键值对。然后,我们使用 for 循环和迭代器来遍历该 unordered_map。通过 `it->first` 和 `it->second` 可以访问当前迭代器指向的键和值。
相关问题
什么是unordered_map?
在C++中,unordered_map是一个关联容器,它提供了一种将键映射到值的方法。与map不同,unordered_map不会对键进行排序,因此它的查找速度更快。unordered_map使用哈希表来实现,因此它的插入、删除和查找操作的平均时间复杂度都是O(1)。
unordered_map的用法与map类似,但是它的迭代器不支持算术运算符,因为它的元素是无序的。以下是unordered_map的一些常用操作:
1. 插入元素:使用insert()函数或者[]运算符可以向unordered_map中插入元素。
2. 删除元素:使用erase()函数可以删除unordered_map中的元素。
3. 查找元素:使用find()函数可以查找unordered_map中的元素。
4. 遍历元素:使用迭代器可以遍历unordered_map中的元素。
以下是一个简单的示例代码,展示了如何使用unordered_map:
```
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myMap;
myMap.insert({"apple", 1});
myMap.insert({"banana", 2});
myMap.insert({"orange", 3});
std::cout << "The value of apple is " << myMap["apple"] << std::endl;
auto it = myMap.find("banana");
if (it ! myMap.end()) {
std::cout << "The value of banana is " << it->second << std::endl;
}
for (auto& p : myMap) {
std::cout << p.first << " : " << p.second << std::endl;
}
return 0;
}
```
如何在C++中使用unordered_map?
在C++中,可以使用unordered_map来实现无序的键值对容器。unordered_map是C++标准库中的一个容器,它使用哈希表来存储元素,因此查找速度是常量级别的。
下面是在C++中使用unordered_map的示例代码:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
// 创建一个unordered_map对象
std::unordered_map<std::string, int> myMap;
// 向unordered_map中插入键值对
myMap["apple"] = 10;
myMap["banana"] = 20;
myMap["orange"] = 30;
// 访问unordered_map中的元素
std::cout << "The value of apple is: " << myMap["apple"] << std::endl;
// 遍历unordered_map中的所有元素
for (const auto& pair : myMap) {
std::cout << "Key: " << pair.first << ", Value: " << pair.second << std::endl;
}
return 0;
}
```
运行以上代码,输出结果如下:
```
The value of apple is: 10
Key: apple, Value: 10
Key: banana, Value: 20
Key: orange, Value: 30
```
阅读全文