boost-range

    1

    1答えて

    ブースト変換されたアダプターを使用してブースト範囲をラップしようとしていますが、これはうまくいかないようです。私は説明するために最小の例を作った。リリースモードで std::vector<int> myInts = { 1,2,3,4,5 }; boost::any_range<double,boost::forward_traversal_tag,double> range = my

    3

    1答えて

    私はテンプレートクラスbooのためにoperator|を書こうとしていますが、テンプレートクラスがブースト範囲タイプ(例:boost::range::filter_range - adlはローカルのものよりboost::range_detail::operator|(SinglePassRange& r, const replace_holder<T>)を好む)のようになるまではすべてうまくいきま

    0

    1答えて

    検索アルゴリズムで範囲アダプタを使用する場合、対応するend()イテレータを取得するためにすべてのアダプタチェーンを繰り返す必要があります。例: std::vector<size_t> numbers = { 10, 11, 12, 13, 14, 2, 1, 3,3,50, 55} ; if (find(numbers|reversed,99) != (numbers|reversed).e

    3

    1答えて

    実行時の条件によっては、範囲を超えて直接または逆の順序で反復処理する状況が定期的に発生します。これは、典型的には、コードの重複(最初のもの)を含むか、または(1秒)に非効率的である以下 if (reverse) { using boost::adaptors::reversed; for (auto const & x : range | reversed) do_stuff(

    1

    1答えて

    fooに基づいてvector<foo>からユニークな要素を取得したいと考えています。 boost::adaptors::transformを使用してメンバーを選択し、次にソートしてからboost::adaptors::uniqueを使用しています。並べ替えの手順がうまくいかない。今度はuniqueを呼び出す以外は、Coliruで以下のコードを試してみました。 #include <iostream>

    8

    1答えて

    Pythonのitertoolsは、n-褶壁形成反復可能オブジェクトのためのteeを持っています def tee(iterable, n=2): it = iter(iterable) deques = [collections.deque() for i in range(n)] def gen(mydeque): while True:

    1

    1答えて

    boost::range::combineを単なる製品としてデカルトパワーとして使用したいと思います。 そのような式の代わりに、boost::range::combine(myRange, myRange, myRange);は、myCombine(myRange, 3);のようなものを書きます。 どのように実装できますか?

    9

    2答えて

    私はboost::rangeライブラリを通過し、boost :: range_iteratorとboost::iterator_rangeに気付きました。私はここでこれらの用語と混同しています。誰も何が2つの違いと何を使用するか説明してください?また、ブースト・レンジ・ライブラリを使用してドキュメンテーションとは別のサンプル・サンプルを紹介することができれば、いいかもしれません。ありがとう

    11

    1答えて

    私はboost::adaptors::transformed(mapとしましょう)をboost::adaptors::filtered(これをfilterとしましょう)にチェーンしようとしています。範囲を超えて「おそらく」(私の場合はstd::pair<bool, T>)を返し、結果の一部のみを出力するfunをマップします。私の最初の実装: define BOOST_RESULT_OF_USE_D

    1

    1答えて

    私は最近、ベクター上で変換/機能を実行しなければならないときに、範囲アダプタをブーストで使用し始めました。以下は、レンジアダプタの使用を開始したときに私が見つけた最も単純な例のスニペットです。 int multiplyByTwo(int n) { return n*2; } std::vector<int> num = {1, 2, 3, 4, 5}; auto result = num |