找到值并从向量中删除

IMI*_*IMI 1 c++ vector

你好假设有5个元素的向量

vector<int> V;
for (int i=0;i<5;i++){
v.push_back(i);
}
Run Code Online (Sandbox Code Playgroud)

现在我如何使用find if和erase来擦除向量中大于2的值?请你建议我准备的示例代码......但我不确定.谢谢

jua*_*nza 5

您可以使用擦除remove惯用法使用std::remove_if和合适的仿函数.例如

V.erase(std::remove_if(std::begin(V), std::end(V),
                       [](int i){ return i > 2; } ), 
                       std::end(V) );
Run Code Online (Sandbox Code Playgroud)

如果你坚持使用pre-C++ 11编译器,那么

bool func(int i) { return i > 2; }

V.erase(std::remove_if(V.begin(), V.end(), func), V.end());
Run Code Online (Sandbox Code Playgroud)