迭代unordered_map C++

Son*_*dar 9 unordered-map c++11

在使用迭代器迭代地图时,在unordered_map中以特定顺序插入的键是否会以相同的顺序出现

例如:如果我们在B中插入(4,3),(2,5),(6,7)并且迭代如下:

for(auto it=B.begin();it!=B.end();it++) {
    cout<<(it->first); 
}
Run Code Online (Sandbox Code Playgroud)

会给我们4,2,6或钥匙可以按任何顺序出现吗?

Aim*_*ery 17

cplusplus.com页面了解(链接)的begin成员函数:unordered_map

请注意,unordered_map对象不保证将哪个特定元素视为其第一个元素.

所以不,不能保证元素按插入顺序迭代.

仅供参考,您可以unordered_map更简单地迭代:

for (auto& it: B) {
    // Do stuff
    cout << it.first;
}
Run Code Online (Sandbox Code Playgroud)

  • 甚至更好,从 c++17 开始,您可以使用结构化绑定: `for (auto&amp; [key, value]: B) { std::cout &lt;&lt; key &lt;&lt; " " &lt;&lt; value; }` (20认同)