問題タブ [range-v3]
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.
c++ - メンバー関数/変数を表示するのに相当するものはありますか?
Streams ライブラリmap
には、メンバー関数によって範囲を表示するためのきちんとした関数があります。Range-V3に同等のビューはありますか?
view::transform
唯一のオプションでしょうか?
c++ - random_shuffle の range-v3 アクションを作成するには?
range-v3 ライブラリ(@EricNiebler による) を使用すると、アルゴリズム コードの記述がはるかにコンパクトになります。たとえば、一連の乱数を生成する方法は次のとおりです。
action::random_shuffle()
ただし、このような仮説でパイプラインを拡張することをお勧めします
これは、そのようなアクションを書くための私の試みです (残念ながら、新しい range-v3 コードを書くことは、ライブラリを使用するよりもかなり冗長です)。
operator()
どこかに深く隠されているものが見つからないためにコンパイルに失敗するLive Example 。
私が見る限り、上記のコードは、action::sort()
. 唯一の違いは、 にrandom_shuffle()
は 2 つのオーバーロード (1 つはランダム ジェネレーターを取る) があるのに対し、他のすべてのアクション ( を含むsort
) にはすべて、追加のパラメーター (コンパレーター、述語、プロジェクターなど) のデフォルト値を持つ単一のオーバーロードがあることです。bind()
これは、上記の 2 つの静的メンバー関数に変換されますrandom_shuffle_fn
が、他のすべてのアクションには 1 つのオーバーロードしかありませんbind()
。
質問: random_shuffle の range-v3 アクションの書き方を教えてください。
c++ - アルゴリズムを式テンプレートと互換性を持たせることはできますか?
式テンプレートで使用できる配列ベースのコードがあるとします。たとえば、これらの配列をオーバーロードし、算術演算子などoperator[]
もオーバーロードしました。+
any_of
ここで、そのような配列でSTL アルゴリズムを実行したいと思います。簡単な方法は、
もちろん、私は計算を短絡して、変更された(範囲ベースの)ものを持っていることを望みlib::any_of
ます
オーバーlib::any_of
ロードoperator[]
された に対して行われたのと同じように、その入力に対して を記述すると、その仕事が行われoperator+
ます。ただし、これには、そのような配列で実行できる可能性のあるすべての STL アルゴリズムの同様の再実装が必要になります。
質問: それで、既存の範囲ベースのアルゴリズム (Boost.Range、range-v3)を、ExprArray iterators
. ExprArray
イテレータoperator*
を変更してoperator++
、これが範囲ベースのアルゴリズムに対して透過的になるようにすることは可能ですか?
したがって、アルゴリズム バージョンが実際にイテレータに関して実装されている場合、ループは を計算するfor (auto it = first; it != last; ++it)
必要*it
があるという事実を認識し、 をb[i] + c[i]
実行する必要があることを認識++it
している必要があります++i
。
c++ - 変換された値に基づいて最小要素を見つける
これが、コードレビューから私にもたらされたタスクです。特別な種類の比較述語に基づいて、セットから最小値を選択したいと考えています。このような:
ここでは、述語に基づいて最小要素を見つけます。この述語は、両方の値の削減float
を計算し、それらの float を比較します。うまく機能し、きれいに見えます。
問題が見えますか?はい、N
要素のセットは時間calcReduction()
と呼ばれますが、要素ごとに1回2N
だけ計算するだけで十分です。N
この問題を解決する 1 つの方法は、明示的な計算を記述することです。
N
正常に動作し、への呼び出ししかありませんcalcReduction()
。ただし、 の明示的な呼び出しと比較して、あまりにも冗長に見え、意図が明確ではありませんmin_element
。呼び出すmin_element
と、最小限の要素を見つけることができると簡単に推測できるからです。
私が今持っている唯一のアイデアはmin_element_with_reduction
、範囲と縮小関数を受け入れるような独自のアルゴリズムを作成することです。合理的に聞こえますが、すぐに使える解決策があるかどうか疑問に思います。
明確な意図といくつかの準備が整ったソリューションでこのタスクを解決する方法についてのアイデアはありますか? ブースト大歓迎です。C++17 と範囲は興味深いものです。
c++ - オーディオ ストリームをチャンクに分割する C++ Range-V3
私は wav ファイルを読んでいて、最後に std::array にデータをプッシュしています。データのチャンクに対して何らかの操作を行う必要があります。ですから、これはエリック・ニーブラーの音域を学ぶ良い機会だと思いました。
「カスタム範囲」セクションの下のマニュアルページでview_facade を見ましたが、この質問を見ました: link。カスタム範囲クラスを作成する方法がわかりません。誰でもそれについて私を助けることができますか? 以下のコードは、私が達成しようとしていることを示しています。
コンパイル出力の一部:
- - - - - - アップデート - - - - - - - - - - - - - - - - - - - ------
CONFIG += c++14 を追加すると、以下の自動戻り値の型推定エラーを除いて、コードはほとんどコンパイルされます。
main.cpp:22: -std=c++1y または -std=gnu++1y でのみ使用可能な推定戻り値の型
これらのエラーを回避するために、CONFIG += c++1y を使用しています。しかし、この場合、最初に投稿した一連のエラーが発生しています。私は D 言語から、いわゆる「ヴォルデモート型」が重要であることを知っています。戻り型の推定をあきらめたくありません。gcc でどのフラグを使用すればよいですか?
visual-studio - Windows で range-v3 ライブラリを使用するためのオプションは何ですか?
range-v3ライブラリは、Visual Studio 2015 Update 1 ではビルドされません。Visual Studio (Intel C++、Microsoft CodeGen を使用した Clang 3.7 など) または Windows 上のその他の IDE でビルドするためのオプションは何ですか?
c++ - range-v3 用のカスタム コンテナを作成する方法
を使用して独自の range-v3ビューを作成する方法を理解しましたが、 in-place-mutating を使用できるように独自のコンテナーview-facade
を作成したいと思います。actions
残念ながら、a のような単純なヘルパーはないようです。container-facade
また、私の C++ スキルはまだ range-v3 ソースを読むだけで理解できるほど狂っていません。コンテナはどのインターフェースを実装する必要がありますか、または何から派生させる必要がありますか?
ヒントをありがとう!