gpt4 book ai didi

c++ - 如何使用 range-v3 将 vector 转换为新 vector ?

转载 作者:太空狗 更新时间:2023-10-29 20:10:10 25 4
gpt4 key购买 nike

我来自 C# 世界,在那里我可以编写如下内容:

var newList = oldList.Select(x => x * 2).Where(x => x > 3).ToList();

这允许我获取一个列表,以某种方式对其进行转换,并将结果存储在一个新列表中。

我想在 C++ 中使用 做同样的事情.我了解转换的工作原理,但是 提供类似的“接收器”方法来计算和收集结果?

我正在寻找类似 toVector 的东西,它会将结果范围计算到新分配的 std::vector 中。

最佳答案

你可以这样做:

std::vector<int> v2 = v
| ranges::view::transform([](int x) { return x * 2; })
| ranges::view::filter([](int x) { return x > 3; });

Demo

或者,如果您更喜欢左侧的 auto:

auto v2 = v 
| ranges::view::transform([](int x) { return x * 2; })
| ranges::view::filter([](int x) { return x > 3; })
| ranges::to_vector;

关于c++ - 如何使用 range-v3 将 vector 转换为新 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41490092/

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