Ce que je veux dire, c'est - nous savons que les std::map
éléments de s sont triés en fonction des clés. Donc, disons que les clés sont des entiers. Si j'itère de std::map::begin()
à en std::map::end()
utilisant a for
, la norme garantit-elle que je vais itérer en conséquence à travers les éléments avec des clés, triés par 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;
}
L'impression 234
est-elle garantie ou est-ce une implémentation définie?
Raison réelle: j'ai une clé std::map
avec int
. Dans de très rares situations, j'aimerais parcourir tous les éléments, avec une clé, supérieure à une int
valeur concrète . Oui, il semble que ce std::vector
serait le meilleur choix, mais remarquez mes "situations très rares".
EDIT : Je sais, que les éléments de std::map
sont triés .. pas besoin de le signaler (pour la plupart des réponses ici). Je l'ai même écrit dans ma question.
Je posais des questions sur les itérateurs et l'ordre lorsque je parcourais un conteneur. Merci @Kerrek SB pour la réponse.
map::upper_bound
pour trouver le point de départ de l'itération.