std::valarray
From 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];を実行する単一のループとして最適化し、一時オブジェクトや複数回のパスを回避することが可能になります。しかし、Expression Templateは任意のC++コンテナで同じ最適化技術を可能にするため、大半の数値計算ライブラリは柔軟性の観点からvalarrayよりもExpression Templateを好んで使用します。一部のC++標準ライブラリ実装では、std::valarrayの効率的な操作を実装するためにExpression Templateを使用しています(例:GNU libstdc++、LLVM libc++)。valarrayがさらに最適化されることは稀で、例えばIntel Integrated Performance Primitivesなどで見られる程度です。
[編集] テンプレートパラメータ
| T | - | 要素の型。この型は数値型 (NumericType) の要件を満たさなければなりません |
[編集] メンバ型
| メンバ型 | 定義 |
value_type
|
T
|
[編集] メンバ関数
| 新しい数値配列を構築する (public member function) | |
| 数値配列を破棄する (public member function) | |
| 内容を代入する (public member function) | |
| valarrayの要素、スライス、またはマスクを取得/設定する (public member function) | |
| valarrayの各要素に単項算術演算子を適用する (public member function) | |
| valarrayの各要素に複合代入演算子を適用する (public member function) | |
| 他のvalarrayと交換する (public member function) | |
| valarrayのサイズを返す (public member function) | |
| valarrayのサイズを変更する (public member function) | |
| 全要素の合計を計算する (public member function) | |
| 最小の要素を返す (public member function) | |
| 最大の要素を返す (public member function) | |
| valarrayの要素をゼロ埋めでシフトする (public member function) | |
| valarrayの要素を巡回シフトする (public member function) | |
| valarrayのすべての要素に適用する (public member function) |
[編集] 非メンバ関数
| (C++11) |
std::swap アルゴリズムを特殊化する (function template) |
| (C++11) |
std::begin をオーバーロードする (function template) |
| (C++11) |
std::end を特殊化する (function template) |
| 2つのvalarray、またはvalarrayと値の各要素に二項演算子を適用する (function template) | |
| 2つのvalarray、またはvalarrayと値を比較する (function template) | |
| valarrayの各要素に関数absを適用する (function template) | |
指数関数 | |
| valarrayの各要素に関数std::expを適用する (function template) | |
| valarrayの各要素に関数std::logを適用する (function template) | |
| valarrayの各要素に関数std::log10を適用する (function template) | |
べき乗関数 | |
| 2つのvalarray、またはvalarrayと値に関数std::powを適用する (function template) | |
| valarrayの各要素に関数std::sqrtを適用する (function template) | |
三角関数 | |
| valarrayの各要素に関数std::sinを適用する (function template) | |
| valarrayの各要素に関数std::cosを適用する (function template) | |
| valarrayの各要素に関数std::tanを適用する (function template) | |
| valarrayの各要素に関数std::asinを適用する (function template) | |
| valarrayの各要素に関数std::acosを適用する (function template) | |
| valarrayの各要素に関数std::atanを適用する (function template) | |
| valarrayと値に関数std::atan2を適用する (function template) | |
双曲線関数 | |
| valarrayの各要素に関数std::sinhを適用する (function template) | |
| valarrayの各要素に関数std::coshを適用する (function template) | |
| valarrayの各要素に関数std::tanhを適用する (function template) | |
[編集] ヘルパークラス
| valarrayのBLAS風スライス: 開始インデックス、長さ、ストライド (class) | |
| スライスを適用した後のvalarrayのサブセットへのプロキシ (class template) | |
| valarrayの汎用スライス: 開始インデックス、長さの集合、ストライドの集合 (class) | |
| gsliceを適用した後のvalarrayのサブセットへのプロキシ (class template) | |
真偽値マスクのoperator[]を適用した後のvalarrayのサブセットへのプロキシ(class template) | |
間接operator[]を適用した後のvalarrayのサブセットへのプロキシ(class template) |
[編集] 推論補助(C++17から)
[編集] 関連項目
| (C++26) |
basic_simd のための、幅を指定できる便利なエイリアステンプレート(エイリアステンプレート) |
| (C++26) |
basic_simd_mask のための、幅を指定できる便利なエイリアステンプレート(エイリアステンプレート) |
| (parallelism TS v2) |
データ並列ベクトル型 (class template) |
| (parallelism TS v2) |
要素型がboolのデータ並列型 (class template) |