web-dev-qa-db-fra.com

Itération sur unordered_map C ++

Est-il vrai que les clés insérées dans un ordre particulier dans une carte non ordonnée, viendront dans le même ordre tout en itérant sur la carte en utilisant l'itérateur?

Comme par exemple: si nous insérons (4,3), (2, 5), (6, 7) en B. Et itérons comme:

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

nous donnera-t-il 4, 2, 6 ou les clés peuvent-elles venir dans n'importe quel ordre?

9
Sonu Patidar

À partir de la page cplusplus.com sur la fonction membre begin de unordered_map ( lien ):

Notez qu'un objet unordered_map ne fait aucune garantie sur quel élément spécifique est considéré comme son premier élément .

Donc non, il n'y a aucune garantie que les éléments seront réitérés dans l'ordre dans lequel ils ont été insérés.

Pour info, vous pouvez parcourir un unordered_map plus simplement:

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