私は物理学の研究に取り組んでおり、C++ の入門コースを受講しています。私の研究では、オーダー 3N x 3N の非常に大きな行列で計算を行い、それらを乗算する必要があります。ここで、N は 100 を超える可能性があります。多次元配列を使用して作業コードを作成しましたが、ファイル(非常に大きなファイルです)、プログラムがクラッシュし、テストしたので、より小さい行列で動作することがわかりました。私はオンラインで見回していて、多くの人が C++ で行列のクラスを使用することに言及していましたが、これはより効率的ですか? また、C++ クラスのクラスについて詳しく説明しなかったので、オンラインでいくつかのチュートリアルを読んでいましたが、それらがマトリックスにどのように役立つかを理解できないようです。したがって、それらが多次元配列よりも効率的である場合、方法を確認できるように、誰かが行列のクラスを含むコードの小さな例を投稿できますか。ありがとう
2 に答える
1
std::vector
配列の代わりに 使用することもできます。
配列の問題は、事前にサイズを知る必要があることです。大規模または巨大な配列の場合、それらを静的またはグローバルとして宣言するのではなく、動的メモリから割り当てる必要がある場合があります。一部のコンパイラでは、グローバル メモリの量に制限があります。
はstd::vector
、配列のサイズ変更を心配することなく、必要に応じて拡張されます。
于 2013-07-14T20:02:32.087 に答える
1
クラスのない C++ コースを持っていた?! それが C から進化した特徴です。実際の名前は「C with classes」でした。行列を含むすべての優れた C++ ライブラリは、行列とテンプレートを多用します。
研究に使用する場合は、ライブラリを使用することを強くお勧めします。使い方を学ぶだけで、正確さと最高の効率に頼ることができます。
たくさんありますが、目的に合ったものを使用する必要がなかったので、あまりお勧めできませんが、Eigenは問題を解決するのに適していると聞きました.
于 2013-07-14T19:38:57.600 に答える