我有一个矢量我想根据用户的输入删除各种内容。例如,如果我有一个带有{1 10 12 2 3 10 5 6 29}的向量,并且我有兴趣删除大于10的所有内容,那么如何为remove_if函数创建谓词来执行此操作。我如何使这个谓词代表用户输入。第一次运行代码时,可能需要删除大于10的所有内容,但第二次可能需要删除大于8的所有内容,需要删除的内容取决于程序运行后给出的用户输入。
答案 0 :(得分:0)
像这样:
#include <algorithm>
#include <vector>
void remove_greater(std::vector<int> & v, int n)
{
v.erase(
std::remove_if(v.begin(), v.end(), [n](int x) { return x > n; }),
v.end());
}
用法:
std::vector<int> v = {1, 10, 12, 2, 3, 10, 5, 6, 29};
remove_greater(v, 10);