sdg*_*sdh 3 c++ vector range-v3
我来自C#世界,我可以写下这样的东西:
var newList = oldList.Select(x => x * 2).Where(x => x > 3).ToList();
Run Code Online (Sandbox Code Playgroud)
这允许我获取列表,以某种方式转换它,并将结果存储在新列表中.
我想在使用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; });
Run Code Online (Sandbox Code Playgroud)
或者,如果你喜欢auto左边:
auto v2 = v
| ranges::view::transform([](int x) { return x * 2; })
| ranges::view::filter([](int x) { return x > 3; })
| ranges::to_vector;
Run Code Online (Sandbox Code Playgroud)