問題タブ [valarray]
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++ - C++ valarray とベクトル
ベクター大好きです。彼らは気の利いた、速いです。しかし、valarray と呼ばれるものが存在することは知っています。ベクトルの代わりに valarray を使用するのはなぜですか? valarray には構文糖衣があることは知っていますが、それ以外に、いつ役立つのでしょうか?
c++ - ベクトルへのポインターですが、valarray へのポインターではありませんか?
配列の途中で const ポインターを抽出しようとしています。ベクトルを使用すると問題なく動作することがわかりましたが、valarray を使用するとコンパイルされません (VS 2008)。誰かが問題が何であるかを説明できますか?
c++ - is there any way to avoid the copy from and to between the valarray and array?
リストには大量のデータがあり、たとえば各要素に数キロバイトあります。数値処理を行うために、それぞれを抽出したいと思います。これらのデータは、もともと float[] として格納されています。処理には多くのインデックスとグローバルな計算が含まれるため、valarray はプログラムしやすいのではないかと思います。しかし、valarray を使用する場合は、最初に配列から valarray にコピーしてから、配列にコピーし直す必要があります。これを回避する方法はありますか?配列で直接作業できるようにする方法はありますか? または、同様の問題を解決するためのより良い方法はありますか?
c++ - valarray が遅いのはなぜですか?
ベクトルと行列を操作するときはMATLABによく似ているため、valarrayを使用しようとしています。最初にいくつかのパフォーマンス チェックを行ったところ、Stroustrup による本C++ プログラミング言語で宣言されているように、valarray がパフォーマンスを達成できないことがわかりました。
テスト プログラムは、実際に double の 500 万回の乗算を実行しました。c = a*b は少なくともfor
loop double 型の要素乗算に匹敵すると思っていましたが、完全に間違っています。複数のコンピューターと Microsoft Visual C++ 6.0 および Visual Studio 2008 で試しました。
ちなみに、次のコードを使用して MATLAB でテストしました。
結果は 46 ミリ秒です。今回は高精度ではありません。参考としてのみ機能します。
コードは次のとおりです。
実行結果: (最大速度最適化のリリース モード)
同じ最適化のデバッグ モード:
c++ - std::valarray と std::array の違いは何ですか
valarray
クラスの見た目はクラスと同じですが、どこを優先するか、またはその逆array
を説明していただけますか?valarray
array
c++ - valarray と vector: なぜ valarray が導入されたのですか?
はい、これは以前に質問されており、答えは次のとおりです。
valarray
s (値配列) は、Fortran の速度の一部を C++ にもたらすことを目的としています。valarray
コンパイラーがコードに関する仮定を作成し、より適切に最適化できるように、ポインターを作成しないでください。(Fortran が非常に高速である主な理由は、ポインター型がないため、ポインターのエイリアシングが発生しないためです。)
また:
valarray
また、エイリアシングの可能性を排除することになっています [...]
しかし、これらの答えは私には意味がありません。
valarray
とvector
はクラス テンプレートであり、インスタンス化されるまで存在しません。
そしてもちろん、 avector<int>
はエイリアシングの問題を引き起こすことはありませんvalarray<int>
。
これを考えると、 の目的は何でしたか?valarray
また、なぜ同じ機能を単純に に入れなかったのvector
ですか?
c++ - std::vector を std::valarray に割り当てます
私は を持っているvector<vector<double>
ので、値の表 (マトリックス) があります。列には惑星の位置と速度が含まれているため、行には同じ惑星のデータが格納されます。valarray
数学演算が必要なため、行を a に変換したい。次に、valarrays (惑星) をベクトルに格納します。私はこのように試しました:
このコードは機能せず、ベクトルを valarray に代入する際にエラーが発生します (明らかに許可されていません)。
私がやろうとしたことを簡単な方法で達成する方法はありますか?
c++ - valarrayの連結
にいくつかのデータが保存されていstd::vector<std::vector<double>
ます。std::valarray
これを使用して、からを作成しましたstd::vector<std::vector<double>
。
この新しいものを使用して、corpXのstd:valarray<double>
を作成するので、を取得します。次に、それぞれの最初の2つの値も別の値に格納する必要があります。std::vector
std::vector<std:valarray<double>>
std::valarray
std::valarray
どうすればこれを簡単な方法で達成できますか?ありがとうございました!
c++ - SSE / AVX のアラインされたメモリの valarray
valarray
SSE と AVX でベクトル化できるように、アライメントされたメモリを確実に使用する方法はありますか? 私の知る限り、STL はアラインメントを保証しておらず、アロケーターを valarray に渡すことはできません。これを達成する別の方法はありますか?
よろしくお願いします!
c++ - valarray への raw ポインターの昇格
互換性のために C インターフェイスを持つライブラリを開発しています
whileは、scontext
を格納する生のメモリを指しnum_elements
double
ます。コードの残りの部分で、ライブラリ呼び出しが終わった後に解放せずstd::valarray
に一時的に管理するを構築する戦略はありますか?context