Namespaces
Variants

std:: valarray

From cppreference.net
ヘッダーで定義 <valarray>
template < class T >
class valarray ;

std::valarray は値の配列を表現および操作するためのクラスです。要素ごとの数学演算や、様々な形式の一般化された添字演算子、スライシング、間接アクセスをサポートしています。

目次

注記

std::valarray およびヘルパークラスは特定のエイリアシングがないように定義されており、これらのクラスに対する操作がCプログラミング言語の restrict キーワードと同様の最適化を可能にします。さらに、 valarray 引数を取る関数や演算子はプロキシオブジェクトを返すことが許可されており、 v1 = a * v2 + v3 ; のような式を、 v1 [ i ] = a * v2 [ i ] + v3 [ i ] ; のように一時オブジェクトや複数回の走査を回避する単一ループとしてコンパイラが最適化することを可能にします。しかしながら、 expression templates によって同じ最適化技術が任意のC++コンテナで利用可能であり、ほとんどの数値計算ライブラリは柔軟性の観点からvalarrayよりもexpression templatesを優先しています。一部のC++標準ライブラリ実装では std::valarray の効率的な操作を実装するためにexpression templatesを使用しています(例:GNU libstdc++ と LLVM libc++)。valarrayがさらに最適化されることは稀であり、例としては Intel Integrated Performance Primitives などがあります。

テンプレートパラメータ

T - 要素の型。この型は NumericType 要件を満たさなければならない

メンバー型

メンバー型 定義
value_type T

メンバー関数

新しい数値配列を構築する
(公開メンバ関数)
数値配列を破棄する
(公開メンバ関数)
内容を代入する
(公開メンバ関数)
valarrayの要素、スライス、またはマスクを取得/設定する
(公開メンバ関数)
単項算術演算子をvalarrayの各要素に適用する
(公開メンバ関数)
複合代入演算子をvalarrayの各要素に適用する
(公開メンバ関数)
他のvalarrayと交換する
(公開メンバ関数)
valarrayのサイズを返す
(公開メンバ関数)
valarrayのサイズを変更する
(公開メンバ関数)
全要素の合計を計算する
(公開メンバ関数)
最小の要素を返す
(公開メンバ関数)
最大の要素を返す
(公開メンバ関数)
valarrayの要素をゼロ埋めシフトする
(公開メンバ関数)
valarrayの要素を循環シフトする
(公開メンバ関数)
関数をvalarrayの各要素に適用する
(公開メンバ関数)

非メンバー関数

std::swap アルゴリズムを特殊化する
(関数テンプレート)
オーバーロード std::begin
(関数テンプレート)
std::end を特殊化
(関数テンプレート)
二項演算子を2つのvalarrayの各要素、またはvalarrayと値に適用する
(関数テンプレート)
2つのvalarray、またはvalarrayと値を比較する
(関数テンプレート)
valarrayの各要素に関数 abs を適用する
(関数テンプレート)
指数関数
valarrayの各要素に関数 std::exp を適用する
(関数テンプレート)
valarrayの各要素に関数 std::log を適用する
(関数テンプレート)
valarrayの各要素に関数 std::log10 を適用する
(関数テンプレート)
累乗関数
関数 std::pow を2つのvalarray、またはvalarrayと値に適用する
(関数テンプレート)
valarrayの各要素に関数 std::sqrt を適用する
(関数テンプレート)
三角関数
valarrayの各要素に関数 std::sin を適用する
(関数テンプレート)
valarrayの各要素に関数 std::cos を適用する
(関数テンプレート)
valarrayの各要素に関数 std::tan を適用する
(関数テンプレート)
valarrayの各要素に関数 std::asin を適用します
(関数テンプレート)
valarrayの各要素に関数 std::acos を適用する
(関数テンプレート)
valarrayの各要素に関数 std::atan を適用する
(関数テンプレート)
valarrayと値に関数 std::atan2 を適用する
(関数テンプレート)
双曲線関数
関数 std::sinh をvalarrayの各要素に適用
(関数テンプレート)
valarrayの各要素に関数 std::cosh を適用する
(関数テンプレート)
valarrayの各要素に関数 std::tanh を適用します
(関数テンプレート)

ヘルパークラス

BLASライクなvalarrayのスライス:開始インデックス、長さ、ストライド
(クラス)
スライス適用後のvalarrayの部分集合へのプロキシ
(クラステンプレート)
valarrayの一般化されたスライス:開始インデックス、長さの集合、ストライドの集合
(クラス)
gslice適用後のvalarrayの部分集合へのプロキシ
(クラステンプレート)
ブールマスク operator[] 適用後のvalarrayの部分集合へのプロキシ
(クラステンプレート)
間接 operator[] 適用後のvalarrayの部分集合へのプロキシ
(クラステンプレート)

推論ガイド (C++17以降)

関連項目

幅を指定できる basic_simd の便利なエイリアステンプレート
(エイリアステンプレート)
幅を指定できる basic_simd_mask の便利なエイリアステンプレート
(エイリアステンプレート)
(parallelism TS v2)
データ並列ベクトル型
(クラステンプレート)
(parallelism TS v2)
要素型がboolのデータ並列型
(クラステンプレート)