2012-01-22 17 views
12

valarrayクラスの外観はarrayクラスと同じですが、valarrayarray以上、またはその逆の方が好きな場所を教えてください。std :: valarrayとstd :: arrayの違いは何ですか

+1

http://stackoverflow.com/questions/1602451/c-valarray-vs-vector – Johnsyweb

+1

「valarray」ではなく、「vallaray」です。それらはまったく同じものではありません。おそらく 'valarray'を使用するべきではないでしょう。 'array'と' vector'の違いは十分です。 –

答えて

16
  • valarrayarrayはC++ 11
  • valarrayで新しく追加され、C++ 03にはすでにだったarrayではない、可変長です。
  • valarray
  • は、数値計算のために設計されており、 +-は、 *は、 cossin、等... arrayがないなど、操作の多くを提供しています。
  • valarrayには、アレイ(サブアレイ)のスライスを取得するためのインタフェースがあります。arrayはありません。
+0

すべての答えが良いし、それぞれが何かを持っている私は受け入れるか分からなかった。あなたのおかげです! – codekiddy

+0

vector' http://en.cppreference.com/w/cpp/container/arrayとhttp://stackoverflow.com/questions/15079057 '対array''についてのリンクや 'array'のカップルを追加するために私を許可/アレイ-VS-ベクター-導入-類似アンド違い –

4

valarrayは動的データ構造であり、そのサイズは実行時に変更可能で動的割り当てを実行します。 arrayは、コンパイル時にサイズが決定される静的なデータ構造です(また、集合体でもあります)。

valarrayを使用しないでください。代わりにvectorを使用してください。

+3

理由ベクトル好ましいですか? – DilithiumMatrix

+1

@zhermes:HM、おそらくいくつかの背景情報について(http://stackoverflow.com/questions/1602451/c-valarray-vs-vector)[この質問をチェック]。基本的に、標準的なアルゴリズムと 'vector'はあなたが必要なすべてを与えます。 –

5

std::valarray<T>に関連するクラステンプレートは、表現テンプレートとして知られている最適化手法をサポートするためのものです。私はこれをやろうとはしませんでしたが、私の理解では、仕様がこれを必要とせず、これを十分にサポートしていないということです。一般にstd::valarray<T>はかなり専門的なクラスであり、実際には広く使われていません。また、私はstd::valarray<T>のテンプレート引数サポートが限定されたセット(例えば組み込み型の数値型)であると思います。他のstd::array<T, n>

は、可能な限りサイズを固定しながら、通常のコンテナインタフェースをサポートする固定サイズの配列です。基本的にstd::array<T>は、T[n]のバージョンを使用する方が便利です。

関連する問題