Wenn ich über std::map<X,std::vector<Y> >
iterieren, kann ich die Vektoren sortieren, oder könnte das den Iterator ungültig machen?Iterieren über Std :: Map <X, Std :: Vektor <Y>> und Sortieren der Vektoren
Mit anderen Worten, ist der folgende Code in Ordnung?
typedef std::map<int, std::vector<int> > Map;
Map m;
for (Map::iterator it = m.begin(); it != m.end(); ++it) {
std::sort(it->second.begin(), it->second.end());
}
Das ist ein wenig vage und sogar irreführend. Re "Iteratoren von einer Map werden nur ungültig, wenn Sie Elemente entfernen" - nur Iteratoren für die spezifischen Elemente, die entfernt wurden, werden ungültig gemacht. Re STL-Container im Allgemeinen, und ihre Iteratoren werden nur durch "Entfernen oder manchmal Hinzufügen von Elementen" ungültig - keiner dieser Vorgänge macht Iteratoren in std :: map, std :: multimap, std :: set usw. ungültig. –