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 234est-elle garantie ou est-ce une implémentation définie?
Raison réelle: j'ai une clé std::mapavec int. Dans de très rares situations, j'aimerais parcourir tous les éléments, avec une clé, supérieure à une intvaleur concrète . Oui, il semble que ce std::vectorserait le meilleur choix, mais remarquez mes "situations très rares".
EDIT : Je sais, que les éléments de std::mapsont 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_boundpour trouver le point de départ de l'itération.