Ce que je veux dire est - nous savons que l' std::map
's éléments sont triés en fonction de clés. Donc, disons que les clés sont des nombres entiers. Si je itération à partir d' std::map::begin()
de std::map::end()
à l'aide d'un for
, le standard garantie que je vais effectuer une itération, par conséquent, à travers les éléments avec des touches, triés dans l'ordre croissant?
Exemple:
std::map<int, int> map_;
map_[1] = 2;
map_[2] = 3;
map_[3] = 4;
for( std::map<int, int>::iterator iter = map_.begin();
iter != map_.end();
++iter )
{
std::cout << iter->second;
}
Est-ce garanti pour imprimer 234
ou c'est la mise en œuvre définies?
La vie réelle raison: j'ai un std::map
avec int
clés. Dans de très rares situations, j'aimerais aller parcourir tous les éléments, avec la clé, plus de de béton int
de la valeur. Yep, ça sonne comme std::vector
serait le meilleur choix, mais à mon avis "très rares sont les situations".
EDIT: je sais, que les éléments d' std::map
sont triés.. pas besoin de le signaler (pour la plupart des réponses ici). J'ai même écrit dans ma question.
Je posais des questions sur les itérateurs et l'ordre quand je suis itération dans un récipient. Merci @Kerrek SB pour la réponse.