我是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/