相同键的unordered_map迭代顺序

时间:2015-03-10 09:33:17

标签: c++ c++11 c++14

当循环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

1 个答案:

答案 0 :(得分:7)

是的,它在C ++ 11 23.2.5 / 6中提到:

  

在支持等效键的容器中,具有等效键的元素在容器的迭代顺序中彼此相邻。