我是C++的新手。我想知道经验丰富的编码员是如何做到的。

是)我有的:

set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
s.insert(4);
s.insert(5);

for(set<int>::iterator itr = s.begin(); itr != s.end(); ++itr){
if (!(*itr % 2))
    s.erase(itr);
}

当然,这是行不通的。因为删除后itr会增加。
这意味着在我从集合中删除元素后,Itr每次都必须指向集合的开始吗?

最佳答案

 for(set<int>::iterator itr = s.begin(); itr != s.end(); ){
  if (!(*itr % 2))
      s.erase(itr++);

  else ++itr;
 }

Scott Myers的有效STL

关于c++ - 如何从C++中的set <int>中删除所有偶数整数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2088495/

10-13 02:35