Was ich meine ist - wir wissen, dass die std::map
Elemente 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 234
oder ist die Implementierung definiert?
Realer Grund: Ich habe einen std::map
mit int
Schlüsseln. In sehr seltenen Situationen möchte ich alle Elemente mit einem Schlüssel durchlaufen, der größer als ein konkreter int
Wert ist. Ja, es klingt wie std::vector
die bessere Wahl, aber beachten Sie meine "sehr seltenen Situationen".
EDIT : Ich weiß, dass die Elemente von std::map
sortiert 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_bound
den Punkt finden, an dem Sie mit der Iteration beginnen können.