<valarray>ヘッダは、数値計算に特化した配列クラスである valarray と、基礎的な数学的処理を行うための関数オーバーロードを定義したライブラリである。
このヘッダで定義される任意の valarray<T> 型を返す関数は(メンバ関数、非メンバ関数とも)、式テンプレートでの実装を可能とするため valarray<T> 型以外の代理の型を返すことが規格で許可されている。
このような代理の型には、valarray の全ての const メンバ関数が提供される。
また、このような代理の型を提供する処理系では、以下のような関数も提供される。
- 本ヘッダで提供される、
const valarray<T>&を 1 つだけ引数に持つ全ての関数は、提供される代理の型も引数として受け付ける。
(ただし、beginとendを除く) - 本ヘッダで提供される、
const valarray<T>&を 2 つ引数に持つ全ての関数は、当該代理の型とvalarray<T>の任意の組み合わせも引数として受け付ける。
これらを踏まえ、本リファレンスではこれらの代理の型が使用されうる箇所は ValOrProxy として表記している。戻り値型に ValOrProxy と表記している箇所は、valarray<T> か代理の型のいずれかであることを、引数型に ValOrProxy と表記している箇所は、valarray<T> と代理の型のいずれでも受け取ることが可能であることを表している。
このヘッダでは、以下の標準ヘッダをインクルードする:
<initializer_list>(C++11)
配列クラス
| クラス | 説明 | 対応バージョン |
|---|---|---|
valarray |
数値演算に特化した配列クラス |
スライス指示
以下は、valarrayクラスの配列から条件一致した要素を抽出するための、ヘルパークラスである。
| クラス | 説明 | 対応バージョン |
|---|---|---|
slice |
スライス指示用のヘルパークラス | |
gslice |
sliceをより一般化したスライス指示用のヘルパークラス |
スライス結果の配列クラス
以下は、valarrayクラスのoperator[]メンバ関数によって返される、スライス結果の配列クラスである。これらのクラスは、配列のコピーは保持せず、元となるvalarrayオブジェクトの要素を参照する。
| クラス | 説明 | 対応バージョン |
|---|---|---|
slice_array |
valarrayからsliceによって要素抽出した結果となる配列クラス |
|
gslice_array |
valarrayからgsliceによって要素抽出した結果となる配列クラス |
|
mask_array |
valarrayからvalarray<bool>を指定して要素抽出した結果となる配列クラス |
|
indirect_array |
valarrayからvalarray<size_t>を指定して要素抽出した結果となる配列クラス |
参照
- N2930 Range-Based For Loop Wording (Without Concepts)
valarrayにbeginとendが追加された提案 - LWG Issue 2058. valarray and begin/end
valarrayの代理の型にbeginとendは適用できないとした経緯