【问题标题】:Get all stl vector elements greater than a value获取所有大于某个值的stl向量元素
【发布时间】:2012-10-19 16:07:32
【问题描述】:

我想知道如何找到具有验证特定条件的值的 stl 矢量元素列表。例如,如果我有一个 int 值向量

vector<int> V;

我想获取所有大于 5 的元素。

提前致谢。

【问题讨论】:

    标签: c++ stl vector


    【解决方案1】:

    如果值:您会std::copy_if()

    std::vector<int> target;
    std::copy_if(v.begin(), v.end(), std::back_inserter(target),
                 std::bind(std::less<int>(), 5, _1));
    

    【讨论】:

    • std::erase_if,并反转条件,重新排列原始容器。
    • @MooingDuck:我猜,你的意思是erase()std::remove_if()的组合,即v.erase(std::remove_if(v.begin(), v.end(), std::bind(std::less_equal&lt;int&gt;(), _1, 5), v.end()));
    • @DietmarKühl 你能解释一下std::bind的用法吗?谢谢
    • @tuxworker: sure: std::bind() 用于Curryingstd::less&lt;int&gt;() 的第一个参数绑定到5,第二个参数成为函数调用的第一个参数由std::bind() 生成的对象。一个完整的解释可能本身就是一个问题,可能已经在 Stackoverflow 上得到了回答。
    • @DietmarKühl v.erase(std::remove_if(v.begin(), v.end(), std::bind(std::less_equal(), _1, 5) , v.end()));这是否会删除原始容器中小于或等于 5 的元素?谢谢
    猜你喜欢
    • 2012-10-11
    • 2012-09-18
    • 2021-11-10
    • 2020-05-10
    • 1970-01-01
    • 2016-11-30
    • 2021-07-02
    • 2013-11-09
    • 1970-01-01
    相关资源
    最近更新 更多