我在想这个循环:
struct tmp {
int min;
int max;
tmp(int a, int b) :min(a), max(b){};
};
std::vector <tmp> data;
for (auto tmp_a : data){
if(tmp_a.min == 0){
//how to delete tmp_a item from data from there?
}
}
当然我可以迭代这个循环,但我认为这不是最快的方法。 (当然我可能是错的 - 然后纠正我)
问题: 如何删除范围循环内的项目?(使用最快的方法)
最佳答案
放弃循环并使用 erase-remove 习惯用法。
data.erase(std::remove_if(data.begin(), data.end(), [] (tmp t) {
return t.min == 0;
}), data.end());
关于c++ - 在 for - range 循环中删除项目的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29244587/