std::valarray
提供: cppreference.com
ヘッダ <valarray> で定義 | ||
template<class T > class valarray; | ||
std::valarray は値の配列を表現、操作するためのクラスです。 要素ごとの数学演算や様々な形の一般化された添字演算子、スライス、間接アクセスがサポートされます。
目次 |
[編集]ノート
std::valarray およびヘルパークラスは特定の形のエイリアスが発生しないように定義されており、これらのクラスが C プログラミング言語の restrict キーワードの効果と同様に最適化することを可能とします。 さらに、 valarray
引数を取る関数および演算子は、コンパイラが v1 = a*v2 + v3; のような式を、 v1[i]= a*v2[i]+ v3[i]; を実行する単一のループに最適化して一時領域やマルチパスを回避できるように、プロキシオブジェクトを返すことが許されています。 しかし、 式テンプレートを使用すれば任意の C++ コンテナに対して同じ最適化テクニックが利用でき、数値ライブラリの多くは柔軟性のために valarray よりも式テンプレートを好みます。 C++ 標準ライブラリには std::valarray
に対する効率的な演算を実装するために式テンプレートを使う実装もあります (GNU libstdc++ や LLVM libc++ など)。 ごく稀に valarray がさらに最適化されている場合もあります (Intel Integrated Performance Primitives など)。
[編集]テンプレート引数
T | - | 要素の型。 NumericType の要件を満たさなければなりません |
[編集]メンバ型
メンバ型 | 定義 |
value_type | T |
[編集]メンバ関数
新しい数値配列を構築します (パブリックメンバ関数) | |
数値配列を破棄します (パブリックメンバ関数) | |
内容を代入します (パブリックメンバ関数) | |
valarray の要素、スライス、マスクを取得または設定します (パブリックメンバ関数) | |
valarray の各要素に単項算術演算子を適用します (パブリックメンバ関数) | |
valarray の各要素に複合代入演算子を適用します (パブリックメンバ関数) | |
別の valarray と入れ替えます (パブリックメンバ関数) | |
valarray のサイズを返します (パブリックメンバ関数) | |
valarray のサイズを変更します (パブリックメンバ関数) | |
すべての要素の合計を計算します (パブリックメンバ関数) | |
最も小さい要素を返します (パブリックメンバ関数) | |
最も大きい要素を返します (パブリックメンバ関数) | |
valarray の要素をゼロ埋めシフトします (パブリックメンバ関数) | |
valarray の要素を循環シフトします (パブリックメンバ関数) | |
valarray のすべての要素に関数を適用します (パブリックメンバ関数) |
[編集]非メンバ関数
(C++11) | std::swap アルゴリズムの特殊化 (関数テンプレート) |
(C++11) | std::begin の特殊化 (関数テンプレート) |
(C++11) | std::end の特殊化 (関数テンプレート) |
2つの valarray の各要素または valarray と値に二項演算子を適用します (関数テンプレート) | |
2つの valarray または valarray と値を比較します (関数テンプレート) | |
valarray の各要素に関数 std::abs を適用します (関数テンプレート) | |
指数関数 | |
valarray の各要素に関数 std::exp を適用します (関数テンプレート) | |
valarray の各要素に関数 std::log を適用します (関数テンプレート) | |
valarray の各要素に関数 std::log10 を適用します (関数テンプレート) | |
冪関数 | |
2つの valarray または valarray と値に関数 std::pow を適用します (関数テンプレート) | |
valarray の各要素に関数 std::sqrt を適用します (関数テンプレート) | |
三角関数 | |
valarray の各要素に関数 std::sin を適用します (関数テンプレート) | |
valarray の各要素に関数 std::cos を適用します (関数テンプレート) | |
valarray の各要素に関数 std::tan を適用します (関数テンプレート) | |
valarray の各要素に関数 std::asin を適用します (関数テンプレート) | |
valarray の各要素に関数 std::acos を適用します (関数テンプレート) | |
valarray の各要素に関数 std::atan を適用します (関数テンプレート) | |
valarray と値に関数 std::atan2 を適用します (関数テンプレート) | |
双曲線関数 | |
valarray の各要素に関数 std::sinh を適用します (関数テンプレート) | |
valarray の各要素に関数 std::cosh を適用します (関数テンプレート) | |
valarray の各要素に関数 std::tanh を適用します (関数テンプレート) |
[編集]ヘルパークラス
BLAS ライクな valarray のスライス: 開始位置、長さ、ストライド (クラス) | |
slice 適用後の valarray のサブセットへのプロキシ (クラステンプレート) | |
一般化された valarray のスライス: 開始位置、長さのセット、ストライドのセット (クラス) | |
gslice 適用後の valarray のサブセットへのプロキシ (クラステンプレート) | |
ブーリアンマスクの operator[] 適用後の valarray のサブセットへのプロキシ (クラステンプレート) | |
間接参照の operator[] 適用後の valarray のサブセットへのプロキシ (クラステンプレート) |