C++迭代器遍历哈希表
时间: 2023-08-13 17:10:09 浏览: 357
对于C++中的哈希表(unordered_map),我们可以使用迭代器来遍历它。迭代器提供了一种访问容器元素的方式,可以按顺序遍历哈希表中的键值对。
下面是一个简单的示例代码,展示了如何使用迭代器遍历哈希表:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<int, std::string> myMap;
myMap[1] = "apple";
myMap[2] = "banana";
myMap[3] = "orange";
// 使用 auto 关键字定义迭代器
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << "Key: " << it->first << ", Value: " << it->second << std::endl;
}
return 0;
}
```
在上面的示例中,我们首先创建了一个哈希表`myMap`,并向其中插入了三个键值对。然后使用`auto`关键字定义一个迭代器`it`,并通过`begin()`和`end()`函数获得迭代器的起始和结束位置。在循环中,我们通过`it->first`和`it->second`来访问键和值,并打印输出。循环会一直遍历到迭代器指向结束位置。
希望这个例子能够帮助你理解如何使用迭代器遍历C++中的哈希表!
相关问题
unordered_map迭代器遍历
unordered_map是C++标准库中的关联容器,它内部实现了哈希表结构,用于存储键值对。迭代器在unordered_map中扮演着关键角色,用于访问和遍历其中的元素。
unordered_map提供了两种类型的迭代器:const_iterator(只读迭代器)和iterator(可修改迭代器)。你可以通过begin()和end()函数获取到容器的第一个和最后一个迭代器,然后按照顺序遍历:
```cpp
std::unordered_map<Key, Value> myMap;
// ...填充map
// 遍历所有键值对
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
const Key& key = it->first; // 键
Value& value = it->second; // 值
// 对于每个键值对做操作
std::cout << "Key: " << key << ", Value: " << value << "\n";
}
// 或者使用const_iterator如果不想修改容器
for (const auto& pair : myMap) {
const Key& key = pair.first;
const Value& value = pair.second;
// ...
}
```
在遍历时,每次迭代会自动跳过已被删除的键值对,保证了数据的一致性。注意,由于unordered_map是无序的,所以迭代顺序并不是插入的顺序。
C++中哈希表如何遍历
在C++中,哈希表可以使用迭代器或范围循环进行遍历。
使用迭代器遍历哈希表的示例代码如下:
```c++
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myMap = { {"apple", 1}, {"banana", 2}, {"orange", 3} };
// 使用迭代器遍历哈希表
for (auto it = myMap.begin(); it != myMap.end(); ++it) {
std::cout << it->first << ": " << it->second << std::endl;
}
return 0;
}
```
使用范围循环遍历哈希表的示例代码如下:
```c++
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<std::string, int> myMap = { {"apple", 1}, {"banana", 2}, {"orange", 3} };
// 使用范围循环遍历哈希表
for (const auto& [key, value] : myMap) {
std::cout << key << ": " << value << std::endl;
}
return 0;
}
```
其中,使用auto关键字定义的迭代器it指向哈希表的第一个元素,每次遍历时先判断迭代器是否等于哈希表的end()迭代器,如果不等于,则输出当前元素的键值对,然后将迭代器指向下一个元素。使用范围循环则更加简洁,直接遍历哈希表的所有元素并输出。
阅读全文
相关推荐
















