Ich habe fast nie ein ++ oder - irgendwo außer auf einer eigenen Linie. Ich weiß, dass sie zu undefiniertem Verhalten führen können und die Hölle für das Debuggen sein können. Aber für Ausführlichkeitszwecke bin ich versucht. Ist das ein gültiger Code?Verwendet einen Predecrement-Operator auf der rechten Seite einer Zuweisung gültig C++?
map<int, int> dict;
...
int key = ...;
if (dict.lower_bound(key) != dict.begin()) {
int prevval = (--dict.lower_bound(key))->second;
...
}
Ich würde wie nur
tunint prevval = (dict.lower_bound(key)-1)->second;
aber bidirektionale Iteratoren haben keine operator-()
definiert.
Danke!
Wenn Sie sich nicht sicher sind, in welcher Reihenfolge - verwenden Sie weitere Klammern – Ulterior