Fra*_*ank 4 c++ iterator stl map
迭代时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());
}
Run Code Online (Sandbox Code Playgroud)
你的代码没问题.来自a的迭代器map
仅在从地图中删除元素时失效.修改STL容器的元素永远不会使该容器的迭代器无效,只会对容器本身进行操作,例如删除或有时添加元素.