Was ich meine ist - wir wissen, dass die std::mapElemente nach den Schlüsseln sortiert sind. Nehmen wir also an, die Schlüssel sind ganze Zahlen. Wenn ich von std::map::begin()bis zur std::map::end()Verwendung von a iteriere for, garantiert der Standard, dass ich konsequent durch die Elemente mit Schlüsseln iteriere, die in aufsteigender Reihenfolge sortiert sind?
Beispiel:
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;
}
Wird dies garantiert gedruckt 234oder ist die Implementierung definiert?
Realer Grund: Ich habe einen std::mapmit intSchlüsseln. In sehr seltenen Situationen möchte ich alle Elemente mit einem Schlüssel durchlaufen, der größer als ein konkreter intWert ist. Ja, es klingt wie std::vectordie bessere Wahl, aber beachten Sie meine "sehr seltenen Situationen".
EDIT : Ich weiß, dass die Elemente von std::mapsortiert sind. Sie müssen nicht darauf hinweisen (für die meisten Antworten hier). Ich habe es sogar in meiner Frage geschrieben.
Ich habe nach den Iteratoren und der Reihenfolge gefragt, wenn ich durch einen Container iteriere. Danke @Kerrek SB für die Antwort.
map::upper_boundden Punkt finden, an dem Sie mit der Iteration beginnen können.