【发布时间】:2023-03-14 00:54:01
【问题描述】:
使用诸如ranges::view::reverse 之类的惰性范围组合器,我可以为其提供单个参数(例如reverse(iota(0,3)));或者我可以使用它来调整使用operator| 的范围(例如iota(0,3) | reverse)。这种平价看起来相当规律。以下是空视图、一元视图和二元视图的示例:
#include <range/v3/all.hpp>
#include <iostream>
int main(int argc, char *argv[])
{
using namespace ranges::view;
std::cout << (iota(0,9) | reverse) << ' ';
std::cout << reverse(iota(0,9)) << '\n';
std::cout << (iota(0,9) | chunk(4)) << ' ';
std::cout << chunk(iota(0,9),4) << '\n';
std::cout << (iota(0,9) | replace(5,0)) << ' ';
std::cout << replace(iota(0,9),5,0) << '\n';
return 0;
}
我注意到ranges::view::zip_with 组合子只能用于第二种(非适配器)形式;如zip_with(std::plus{},iota(0,9),iota(0,9))。 zip_with 不能被定义为与 operator| 一起使用是否有技术原因? range-v3 库中惰性范围组合器的参数是否有规范排序?
我正在使用 range-v3 库的最新版本 (v0.4.0)。
【问题讨论】:
-
如何将两个范围通过管道传输到单个
zip_view? -
你只需要管其中一个。