web-dev-qa-db-ja.com

unordered_map C ++の繰り返し

Unordered_mapの特定の順序で挿入されたキーは、イテレータを使用してマップを反復処理するときに同じ順序になりますか?

たとえば:(4,3)、(2、5)、(6、7)をBに挿入すると、次のように繰り返します。

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

それは私たちに4、2、6を与えますか、キーは任意の順序で来ることができますか?

9
Sonu Patidar

unordered_mapbeginメンバー関数に関する cplusplus.com ページから( link ):

Unordered_mapオブジェクトは、特定の要素がその最初の要素とみなされることを保証しないことに注意してください。

そのため、要素が挿入された順序で繰り返される保証はありません。

参考までに、あなたはunordered_mapをもっと簡単に繰り返すことができます:

for (auto& it: B) {
    // Do stuff
    cout << it.first;
}
16
Aimery