如何遍历unordered_map
时间: 2023-10-12 08:14:11 浏览: 54
你可以使用迭代器来遍历unordered_map,具体做法是:
```C++
unordered_map<int, string> myMap;
// 添加元素到unordered_map
myMap[1] = "hello";
myMap[2] = "world";
myMap[3] = "foo";
myMap[4] = "bar";
// 使用迭代器遍历unordered_map
unordered_map<int, string>::iterator it;
for (it = myMap.begin(); it != myMap.end(); ++it) {
cout << it->first << " => " << it->second << endl;
}
```
在上面的代码中,`myMap.begin()` 返回unordered_map的第一个元素的迭代器,`myMap.end()` 返回unordered_map的最后一个元素的迭代器的下一个位置。在循环中,我们通过 `it->first` 和 `it->second` 可以获取当前元素的键和值。
相关问题
遍历unordered_map
遍历unordered_map可以通过以下几种方式实现:
1. 使用迭代器进行遍历:可以通过遍历unordered_map的迭代器来访问其中的键和值。示例代码如下:
```cpp
unordered_map<int, string> myMap;
// 添加键值对到unordered_map中
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
// 访问键和值
cout << it->first << " " << it->second << endl;
}
```
2. 使用范围-based for循环进行遍历:可以使用范围-based for循环来遍历unordered_map中的键值对。示例代码如下:
```cpp
unordered_map<int, string> myMap;
// 添加键值对到unordered_map中
for (const auto &kv : myMap) {
// 访问键和值
cout << kv.first << " " << kv.second << endl;
}
```
3. 使用find函数进行遍历:可以使用find函数来查找unordered_map中的键,并通过键来访问对应的值。示例代码如下:
```cpp
unordered_map<int, string> myMap;
// 添加键值对到unordered_map中
for (int key = 0; key < 10; ++key) {
// 使用find函数查找键
auto it = myMap.find(key);
if (it != myMap.end()) {
// 访问值
cout << it->second << endl;
}
}
```
以上是遍历unordered_map的几种常用方式。根据不同的需求,选择适合的遍历方式即可。
c++ 遍历unordered_map
遍历unordered_map的效率取决于unordered_map中存储的元素数量。unordered_map是基于哈希表实现的,它使用哈希函数将元素映射到存储桶中。因此,在最坏的情况下,遍历整个unordered_map需要遍历所有的存储桶。
平均情况下,遍历unordered_map的时间复杂度为O(N),其中N是unordered_map中存储的元素数量。然而,由于哈希冲突的影响,实际的性能可能会受到影响。
如果需要按顺序遍历unordered_map,可以使用迭代器来实现。迭代器提供了对unordered_map中元素的访问和遍历。这样可以以线性时间复杂度(O(N))遍历unordered_map的所有元素。
总结起来,unordered_map的遍历效率与存储的元素数量成正比,并且在最坏情况下可能受到哈希冲突的影响。