[英]How do I transform a vector into a new vector using range-v3?
我来自C#世界,我可以写下这样的东西:
var newList = oldList.Select(x => x * 2).Where(x => x > 3).ToList();
这允许我获取列表,以某种方式转换它,并将结果存储在新列表中。
我想在使用range-v3的 C ++中做同样的事情。 我理解转换是如何工作的,但是range-v3是否提供了类似的“接收器”方法来计算和收集结果?
我正在寻找类似toVector
东西,它会将结果范围计算到新分配的std::vector
。
你可能会这样做:
std::vector<int> v2 = v
| ranges::view::transform([](int x) { return x * 2; })
| ranges::view::filter([](int x) { return x > 3; });
或者,如果您更喜欢左侧的auto
:
auto v2 = v
| ranges::view::transform([](int x) { return x * 2; })
| ranges::view::filter([](int x) { return x > 3; })
| ranges::to_vector;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.