我正在尝试从C ++的向量中删除一个元素。在下面的代码中,我正在从数字列表中删除大于10的元素。我使用嵌套循环进行删除。是否有更好或更简单的方法来完成相同的操作。
// removing an element from vector preserving order
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> v {3,2,9,82,2,5,4,3,4,6};
for (int i=0; i < v.size(); i++) {
if (v[i] > 10) { // remove element > 10
while (i < v.size()) {
v[i] = v[i+1];
i ++;
}
}
}
v.pop_back();
for (int i=0; i < v.size(); i++) {
cout << v[i] << "|";
}
return 0;
}
std::remove_if
,不需要自己写。 - chrisv.erase(iteratorOfI)
来缩短代码,但是它完全可以被remove_if
替代。 - chris