Predicate for remove_if

Predicate for remove_if

本文关键字:if remove for Predicate      更新时间:2023-10-16

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

像这样:

#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);