1

2 つの std::vectors x と y とバイナリ関数 F があるとします。z の i 番目の要素が F をx と y の i 番目の要素。とりあえず使ってる

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

もちろん、これには z のメモリ割り当てが必要です。ただし、私の目標は、このメモリ割り当てを回避し、boost::adaptors::transformed が単項関数で行うのと同様に、変換を遅延評価することです。つまり、z の型は、boost::range の型になります。これを行う簡単な方法はありますか、それとも独自の範囲クラスを作成する必要がありますか? 前もって感謝します!

4

1 に答える 1

1

問題は、 Boost.Range が圧縮zip_rangeできる を提供せず、. そのため、 (Boost.Iterator ライブラリの) andを使用して、自分で作成する必要があります。コード例については、たとえばこの回答を参照してください。xytransformmake_iterator_rangezip_iterator

于 2014-02-08T22:18:45.043 に答える