我在想这个循环:

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?
     }
}

当然,我可以迭代此循环,但是我认为这不是最快的方法。 (当然,我可能是错的-然后纠正我)

题:
如何删除范围循环内的项目? (使用最快的方法)

最佳答案

放弃循环并使用擦除删除惯用语。

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/

10-11 22:33
查看更多