【发布时间】:2013-01-13 15:32:53
【问题描述】:
我想为每个循环使用新的 C++11 来迭代列表的所有元素并删除某些元素。例如
std::list<int> myList;
myList.push_back(1);
myList.push_back(13);
myList.push_back(9);
myList.push_back(4);
for(int element : myList) {
if(element > 5) {
//Do something with the element
//erase the element
}else{
//Do something else with the element
}
}
是否可以使用 for each 循环来执行此操作,或者我是否必须返回迭代器才能实现此操作?
【问题讨论】:
-
为什么不能使用 remove_if/erase?
-
或者只是
list::remove_if,不需要迭代器。 -
@KarthikT 和@BenjaminLindley:对不起,我没有在我的问题中提及。我想对满足条件的元素以及所有其他元素做一些事情。我可能可以将它放入
list::remove_if使用的谓词函数中,但我发现这不是很好。 -
@Haatschii 取决于处理的性质,如果它对性能不太重要,我会分两遍完成,这样更干净。