10

vector と valarray の問題は、すでにここで質問されています。私の質問は、特に C++11 の場合に言及しています。「A Tour of C++」「The C++ Programming Language」を読んでいます。どちらの本も、Bjarne Stroustrup によって書かれています。最初の本で、著者は、std::valarray数値計算にはこれが好ましいと説明しています (第 12 章)。しかし、2 冊目の本の第 29 章では、著者は Matrix クラスを a の観点から実装していstd::vectorます。

また、少しグーグルを行うことで、パフォーマンスに関しては、 astd::vectorは動的に割り当てられた「生の配列」と同じくらい高速であるようです。

では、C++11 のコンテキストでは、数値計算にはどのコンテナーを優先する必要がありますか?

これについての私の見解は、 (境界チェックなしでデータへの参照を返す)std::vectorを使用してコンテンツへの高速アクセスを提供し、動的に割り当てられた配列よりも安全であるため、優先する必要があるということです。また、C++11 以降:operator[]std::vectorstd::vector

  • std::vectorを使用して、基礎となるデータへの直接アクセスを提供しますstd::vector::data()
  • std::vector を使用してメモリ使用量を減らすためにサイズを変更できますstd::vector::shrink_to_fit()
4

1 に答える 1