8
如何从一个std::set
删除元素同时遍历它从STD如何删除元素::在遍历其设置
我第一次尝试是这样的:
set<T> s;
for(set<T>::iterator iter = s.begin(); iter != s.end(); ++iter) {
//Do some stuff
if(/*some condition*/)
s.erase(iter--);
}
但是这是有问题如果我们想从集合中删除第一个元素,因为iter--
使迭代器无效。
这样做的标准方法是什么?
第一个代码peice的失败的断言说,迭代器是在视觉studion不相容。无论如何,std :: erase会返回新的迭代器,就像您在代码中指出的一样。 – sajas