當迭代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());
}
這有點模糊甚至誤導。 Re「從映射中迭代器只有在刪除元素時纔會失效」 - 只有刪除特定元素的迭代器纔會失效。一般情況下,STL的容器和他們的迭代器只能通過「刪除或者有時候添加元素」而失效 - 這些操作都不會使迭代器變爲std :: map,std :: multimap,std :: set等。 – 2010-11-24 16:25:53