c++ - 迭代 std::map<X,std::vector<Y>> 并对 vector 进行排序

标签 c++ stl map iterator

遍历 std::map<X,std::vector<Y> > 时,我可以对 vector 进行排序,还是可以使迭代器无效?

也就是说,下面的代码可以吗?

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());
}

最佳答案

您的代码没问题。 map 中的迭代器只有在您从 map 中删除元素时才会失效。修改 STL 容器的元素永远不会使该容器的迭代器失效,只会对容器本身进行操作,例如删除或有时添加元素。

关于c++ - 迭代 std::map<X,std::vector<Y>> 并对 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4268734/

相关文章:

带分隔符的C++文件读取

c++ - 如何使用标准 STL 算法从 istream 填充 std::vector

ios - 从 Phonegap 应用程序在 iOS 上打开 native map 应用程序

google-maps - 如果您只有国家/地区名称,如何将谷歌地图围绕一个国家/地区居中

c++ - 如何制作无模态mfs

c++ - 使用模板变量循环不起作用?

c++ - 为什么我的服务器不向我的客户端发送任何内容

c++ - 在 gdb 中调试 map<int, unique_ptr<A>>

c++ - 我如何仅使用 Binder 在 map 中找到值

java - 更好的 map 构造器