对于remove_if的谓词

时间:2017-03-23 02:37:18

标签: c++

我有一个矢量我想根据用户的输入删除各种内容。例如,如果我有一个带有{1 10 12 2 3 10 5 6 29}的向量,并且我有兴趣删除大于10的所有内容,那么如何为remove_if函数创建谓词来执行此操作。我如何使这个谓词代表用户输入。第一次运行代码时,可能需要删除大于10的所有内容,但第二次可能需要删除大于8的所有内容,需要删除的内容取决于程序运行后给出的用户输入。

1 个答案:

答案 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);