unordered_map 相同键的迭代顺序
unordered_map iteration order for the same key
当遍历 std::unordered_map
时,STL 不保证考虑哪个特定元素顺序。
我的问题是关于具有相同键的元素的顺序,我用不同的编译器尝试过,如果它们具有相同的键,我总是一个接一个地收到(如下例)。我搜索了它,但找不到。它是在标准中的某处提到的还是依赖于实现的?
unordered_multimap<int, int> umap;
umap.insert({30, 9});
umap.insert({10, 1});
umap.insert({20, 5});
umap.insert({30, 8});
umap.insert({20, 4});
umap.insert({10, 2});
for (auto p : umap)
cout << p.first << " " << p.second << endl;
产出
30 8
30 9
20 4
20 5
10 1
10 2
是的,在C++11 23.2.5/6中有提到:
In containers that support equivalent keys, elements with equivalent keys are adjacent to each other in the iteration order of the container.
当遍历 std::unordered_map
时,STL 不保证考虑哪个特定元素顺序。
我的问题是关于具有相同键的元素的顺序,我用不同的编译器尝试过,如果它们具有相同的键,我总是一个接一个地收到(如下例)。我搜索了它,但找不到。它是在标准中的某处提到的还是依赖于实现的?
unordered_multimap<int, int> umap;
umap.insert({30, 9});
umap.insert({10, 1});
umap.insert({20, 5});
umap.insert({30, 8});
umap.insert({20, 4});
umap.insert({10, 2});
for (auto p : umap)
cout << p.first << " " << p.second << endl;
产出
30 8
30 9
20 4
20 5
10 1
10 2
是的,在C++11 23.2.5/6中有提到:
In containers that support equivalent keys, elements with equivalent keys are adjacent to each other in the iteration order of the container.