ベクトル対valarrayの質問は既に質問されていますhere。 私の質問は、特にC++ 11の場合を指します。私は"A Tour of C++"と"The C++ Programming Language"を読んでいます。両方の本はBjarne Stroustrupによって書かれています。最初の本では、数値計算のためにstd::valarray
が好ましいと説明しています(第12章)。しかし、2番目の本の第29章では、著者はstd::vector
という用語でMatrixクラスを実装しています。C++ 11:数値計算には、valarrayまたはvectorを使用する必要があります。
また、googlingのビットを実行することによって、パフォーマンスに応じて、std::vector
は動的に割り当てられた「生の配列」と同じくらい速いと思われます。
C++ 11のコンテキストでは、数値計算にはどのコンテナを優先すべきですか?
この上の私のテイクは、あろうことstd::vector
は(何の境界チェックしないとデータへの参照を返す)operator[]
を使用してそのコンテンツへの高速アクセスを提供し、それは、動的に割り当てられた配列上std::vector
を使用しても安全であるため、std::vector
が好ましいはずです。
std::vector
std::vector::data()
- STDを使用して、基礎となるデータへの直接アクセスを提供する::ベクトルは
std::vector::shrink_to_fit()
としてライブラリを使用することを検討したい場合は、それにも関わらず
v3 = sin(v2 + v1*3)
を行います。現代のC++世界では、std :: vectorはデフォルトのコンテナとして使用するべきではありません。 –