C ++:使用remove_if过滤条件中的向量

时间:2018-12-01 20:04:56

标签: c++ algorithm vector erase

使用擦除+删除_if删除矢量中小于特定值的所有元素的正确语法是什么。但是,此特定值不是常数,而是变量。

请参阅代码以更好地理解该问题:

{
  "someservice": {
    "key":"THE API KEY",
    "id":"THE CLIENT ID"
  }
}

1 个答案:

答案 0 :(得分:0)

下面的示例演示了delete-remove_if的用法。 limit被引用捕获,因此可以在lambda外部进行修改:

#include <vector>
#include <algorithm>
#include <iostream>
int main()
{
    std::vector<int> vec{0,1,2,3,4,5,6,7,8,9};
    int size = vec.size();
    for (int limit = 0; limit <= size; limit++)
    {
        vec.erase(std::remove_if(std::begin(vec), std::end(vec), [&limit](int i) {
            return i < limit;
        }), std::end(vec));
        for (auto& v : vec)
            std::cout << v;
        std::cout << std::endl;
    }
    return 0;
}

预期输出:

0123456789
123456789
23456789
3456789
456789
56789
6789
789
89
9