使用诸如
我注意到
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|
一起使用?在ranges-v3库中,惰性范围组合器的参数是否有规范顺序?我正在使用ranges-v3库的最新版本(v0.4.0)。"Original Answer"的意思是“最初的回答”。
zip_view
? - tkausl