使用临时容器编写范围管道
在 range-v3 中,当使用使用返回 a 的第三方函数的管道时向量,有必要创建一个管道,将该函数映射到该范围的所有元素,并将所有结果向量展平到一个范围及其所有元素elements.
最初,人们可能会尝试编写一个管道,例如:
auto rng = src | view::transform(f) | view::join;
然而,这种方法以前是不可行的,因为不可能创建像 f.
生成的临时容器的视图。
auto rng = views::iota(0, 4)
| views::transform([](int i) { return std::string(i, char('a' i)); })
| views::cache1
| views::join('-');
auto rng =views::iota(0, 4) |视图::变换([](int i) { return std::string(i, char('a' i)); }) |视图::缓存1 | views::join('-');
这确保管道正确处理临时容器,使我们能够编写有效利用临时容器的范围管道。
auto rng = src | views::transform(f) | views::cache1 | views::join;
auto rng = src |视图::变换(f) |视图::缓存1 |视图::加入;
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3