問題タブ [boost-range]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
315 参照

c++ - ブースト範囲 for_each、バインド、コピー、および back_inserter の組み合わせが失敗する

aに含まれるすべての整数を にコピーしたいb

とてもシンプルに見えます。C++ 98 互換のワンライナーが欲しいです。

なぜこれはコンパイルされないのですか? に関するエラーの長いリストがありますがboost::bind、理解できません。さらに、それは複数ページの長さです。

エラーは次で始まります:

エラー C2780: 'boost::_bi::bind_t<_bi::dm_result::type,boost::_mfi::dm,_bi::list_av_1::type> boost::bind(MT::* ,A1)' : 2 つの引数が必要です - 3 つ提供されます

0 投票する
0 に答える
242 参照

c++ - Haskell の groupBy に相当する慣用的で効率的な C++ はありますか?

Boost.Range で入力シーケンスを処理しようとしています。このライブラリにはまだ多くの要望が残されているため、追加の範囲アダプターを自分で作成する必要があります。それらのほとんどは簡単ですが、Haskell の groupBy (または range-v3 の group_by_view) に相当するものを実装しようとしたときに、いくつかの問題に遭遇しました。これは、入力範囲を取り、範囲の範囲を返す変換です。各範囲には、特定のバイナリ述語を満たす入力からの一連の隣接する要素が含まれます。たとえば、二項述語が単にstd::equal_to<int>()の場合、シーケンスは

にマッピングされます

私の問題は、このアダプターのインターフェースにあります。仮定する

がインクリメントされた場合i、2 が見つかるまで基になるシーケンスをスキャンする必要があります。ただし、最初にスキャンする場合*i(これは range です{1, 1})、基本的に最初のグループの終わりをすでに見つけているため、によって引き起こされるトラバーサルは++i冗長になります。 . 内側の反復子から外側の反復子への何らかのフィードバック パスを持つことは可能です。つまりi、内側の反復子が最後に到達した要素からスキャンを開始する必要がありますが、多くのオーバーヘッドが発生し、ダングリング イテレータが作成されるリスクがあります。

この問題に対処する慣用的な方法があるかどうか疑問に思っています。理想的grouped_byには、問題を完全に回避するインターフェイスの再定義です。明らかに、各グループの先頭を見つけるために入力範囲をスキャンする必要がありますが、理由もなく要素を再スキャンせずにそれを行うための堅牢な方法が必要です。(ロバストとは、基礎となる入力範囲の反復子が有効である限り、反復子を無効にしないことを意味し、スキャン自体の間ではありません。)

だから..これに対する既知の/証明された/エレガントな解決策はありますか?

0 投票する
1 に答える
97 参照

c++ - adl が「boost::range_detail::operator|」を好むのはなぜですか ローカルの 'operator|' を介して?

operator|テンプレート クラスの を作成しようとしていますbooが、テンプレート クラスがブースト レンジ タイプになるまではすべてうまくいきます (例の a のようにboost::range::filter_range) boost::range_detail::operator|(SinglePassRange& r, const replace_holder<T>)

ローカル名前空間よりもこの詳細な名前空間をブーストすることから、adl がオーバーロードを好む理由を誰か説明できますか?

}

clang エラー (msvc レポートはほぼ同じ):

0 投票する
1 に答える
393 参照

c++11 - boost::range::combine と繰り返し引数

boost::range::combine単なる積ではなく、デカルト力として使用したいと思います。

そのような式の代わりに のようにboost::range::combine(myRange, myRange, myRange);書きますmyCombine(myRange, 3);

どのように実装できますか?