std::map<X,std::vector<Y> >
を反復処理すると、ベクターを並べ替えることができますか、それともイテレータを無効にすることができますか?std :: map <X、std :: vector <Y>>を繰り返し、ベクトルを並べ替える
つまり、次のコードは大丈夫ですか?
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());
}
これは少し曖昧で誤解を招くこともあります。 "マップからのイテレータは、要素を削除すると無効になります" - 削除された特定の要素に対するイテレータのみが無効になります。 Str :: map、std :: multimap、std :: setなどのイテレータを無効にすることはありません。 –