gpt4 book ai didi

c++ - 过滤 STL 容器的现代方法?

转载 作者:IT老高 更新时间:2023-10-28 13:23:31 27 4
gpt4 key购买 nike

在使用 C# 多年后回到 C++,我想知道现代的 - 阅读:C++11 - 过滤数组的方式是什么,即我们如何实现与此 Linq 查询类似的东西:

var filteredElements = elements.Where(elm => elm.filterProperty == true);

为了过滤元素的 vector (为了这个问题,strings)?

我真诚地希望现在取代需要定义 显式方法 的旧 STL 风格算法(甚至像 boost::filter_iterator 这样的扩展)?

最佳答案

查看来自 cplusplus.com 的示例 std::copy_if :

std::vector<int> foo = {25,15,5,-5,-15};
std::vector<int> bar;

// copy only positive numbers:
std::copy_if (foo.begin(), foo.end(), std::back_inserter(bar), [](int i){return i>=0;} );

std::copy_if 在这里为 foo 中的每个元素计算 lambda 表达式,如果返回 true 则将值复制到 条形.

std::back_inserter 允许我们使用迭代器在 bar 的末尾插入新元素(使用 push_back())无需先将其调整为所需的大小。

关于c++ - 过滤 STL 容器的现代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21204676/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com