<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
は適用できないとした経緯