【发布时间】:2012-10-19 16:07:32
【问题描述】:
我想知道如何找到具有验证特定条件的值的 stl 矢量元素列表。例如,如果我有一个 int 值向量
vector<int> V;
我想获取所有大于 5 的元素。
提前致谢。
【问题讨论】:
我想知道如何找到具有验证特定条件的值的 stl 矢量元素列表。例如,如果我有一个 int 值向量
vector<int> V;
我想获取所有大于 5 的元素。
提前致谢。
【问题讨论】:
如果值:您会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,并反转条件,重新排列原始容器。
erase()和std::remove_if()的组合,即v.erase(std::remove_if(v.begin(), v.end(), std::bind(std::less_equal<int>(), _1, 5), v.end()));
std::bind() 用于Currying:std::less<int>() 的第一个参数绑定到5,第二个参数成为函数调用的第一个参数由std::bind() 生成的对象。一个完整的解释可能本身就是一个问题,可能已经在 Stackoverflow 上得到了回答。