使用std::foreach和for遍历unorderedmap,哪一种更快
时间: 2023-05-26 10:05:42 浏览: 98
一般来说,使用std::foreach比使用for遍历unordered_map更慢。这是因为std::foreach不能有效地利用unordered_map的哈希表结构,而对于每个元素都要执行一个回调函数,导致额外的函数调用开销。而使用for循环遍历时,可以直接使用迭代器访问unordered_map的元素,避免了额外的函数调用开销,因此更快。
相关问题
怎么使用std::foreach遍历unorderedmap
可以使用C++11的范围for循环或者std::for_each来遍历unordered_map。下面是两种方法的示例:
1. C++11的范围for循环
```cpp
#include <iostream>
#include <unordered_map>
int main()
{
std::unordered_map<std::string, int> mymap = {{"apple", 1}, {"banana", 2}, {"cherry", 3}};
for (auto& pair : mymap) {
std::cout << pair.first << ": " << pair.second << '\n';
}
return 0;
}
```
输出:
```cpp
apple: 1
banana: 2
cherry: 3
```
2. std::for_each
```cpp
#include <iostream>
#include <unordered_map>
#include <algorithm>
int main()
{
std::unordered_map<std::string, int> mymap = {{"apple", 1}, {"banana", 2}, {"cherry", 3}};
std::for_each(mymap.begin(), mymap.end(), [](const auto& pair) {
std::cout << pair.first << ": " << pair.second << '\n';
});
return 0;
}
```
输出:
```cpp
apple: 1
banana: 2
cherry: 3
```
foreach 遍历 map
可以使用 C++11 中的 range-based for 循环来遍历 map,示例代码如下:
```c++
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> myMap = {{"apple", 1}, {"banana", 2}, {"orange", 3}};
// 使用 range-based for 循环遍历 map
for (const auto& [key, value] : myMap) {
std::cout << key << " : " << value << std::endl;
}
return 0;
}
```
输出结果为:
```
apple : 1
banana : 2
orange : 3
```
阅读全文