クラス valarray は、2 項演算子の大きなブロックを提供します。プログラムは、これらの演算子を 2 つの valarray または 1 つの valarray と T 値に適用することができます。この場合 T は、式の左辺または右辺に表示されます。これらの演算子はその引数を変更しませんが、代わりに演算の結果を含む新規の valarray を返します。2 つの valarray 引数を取る各バージョンは、演算を配列の対応する要素に適用した結果を返します。T& 引数を取るバージョンは、valarray 引数と T& 引数内の各要素に演算を適用した結果の要素を含む valarray を返します。2 項演算子の全リストについては、『標準 C++ クラスライブラリ・リファレンス』の valarray の項を参照してください。
算術演算子とビット単位の演算子は、T の valarray を返します。論理演算子は、valarray<bool> を返します。この各要素は、2 つの valarray 内の対応する要素の比較、または特定の値を持つ配列内の各要素の比較を表します。以下に例を示します。
int a[3] = {1,2,3}; int b[3] = {0,1,4}; valarray<int> v1(a,3); valarray<int> v2(b,3); valarray<int> v3(0,3); valarray<bool> v4(false,3); v3 = v1 + v2; // v3 = {1,3,7} v4 = v1 == v2; // v4 = {false,false,false} v4 = v1 < v2; // v4 = {false,false,true}
クラス valarray は、20 の超越関数も提供します。そのうち 4 つは多重定義です。各関数は、引数として渡される valarray 内の各要素に超越関数を適用した結果である要素を含む、新規の valarray を返します。超越関数の全リストについては、『標準 C++ クラスライブラリ・リファレンス』の valarray の項を参照してください。
以下の例は、配列の各要素を 2 乗します。
using std::pow; float a[3] = {2.0, 4.0, 16.0}; valarray<float> v(a,3); // v = {2.0, 4.0, 16.0} valarray<float> v2(0.0,3); // v2 = {0.0, 0.0, 0.0} v2 = pow(v,2.0); // v2 = {4.0, 16.0, 256.0 }