使用boost范围转换适配器具有二进制功能

c++: use boost range transformed adaptor with binary function

本文关键字:二进制 功能 适配器 boost 范围 转换 使用      更新时间:2023-10-16

假设我有两个std::向量x和y和一个二进制函数F,我想创建一个新的对象z(不一定是一个向量),其属性是z的第I个元素将是F对x和y的第I个元素的应用。

boost::range::transform(x, y, z.begin(), F)

当然需要为z分配内存。然而,我的目标是避免这种内存分配,并对转换进行惰性评估,类似于boost::adaptors:: transforms对一元函数所做的。换句话说,z的类型是某种boost::range。有什么简单的方法来做到这一点,或者我必须写我自己的范围类?提前感谢!

问题是Boost。Range没有提供可以压缩xyzip_range作为transform的输入。所以你需要自己写一个,例如使用make_iterator_rangezip_iterator(从Boost。迭代器库)。查看示例代码