次の方法で共有


gslice_array クラス

valarrayの一般的なスライスによって定義されたサブセット配列間の操作を提供することによって、一般的なスライス オブジェクトをサポートする内部の補助クラス テンプレート。

構文

template <class Type>
class gslice_array : public gsplice {
public:
    typedef Type value_type;
    void operator=(const valarray<Type>& x) const;

    void operator=(const Type& x) const;

    void operator*=(const valarray<Type>& x) const;

    void operator/=(const valarray<Type>& x) const;

    void operator%=(const valarray<Type>& x) const;

    void operator+=(const valarray<Type>& x) const;

    void operator-=(const valarray<Type>& x) const;

    void operator^=(const valarray<Type>& x) const;

    void operator&=(const valarray<Type>& x) const;

    void operator|=(const valarray<Type>& x) const;

    void operator<<=(const valarray<Type>& x) const;

    void operator>>=(const valarray<Type>& x) const;

// The rest is private or implementation defined
}

解説

クラスは、クラス valarray<Type>のオブジェクト vaへの参照と、valarray<Type> オブジェクトから選択する要素のシーケンスを記述するクラス gsliceのオブジェクト gsを格納するオブジェクトを記述します。

gslice_array<Type> オブジェクトを構築するには、va[gs] という形式の式を記述するだけです。 gslice_array クラスのメンバー関数は、valarray<Type> に対して定義されている、対応する関数のシグネチャのように動作しますが、選択された要素のシーケンスのみが影響を受ける点が異なります。

クラス テンプレートは、特定の valarray 操作によって間接的に作成され、プログラムで直接使用することはできません。 代わりに、 slice 添字演算子によって内部補助クラス テンプレートが使用されます。

gslice_array<Type> valarray<Type>::operator[]( const gslice& ).

valarray vaslice gslに対してフォーム va[gsl]の式を記述することによってのみ、gslice_array<Type> オブジェクトを構築します。 gslice_array クラスのメンバー関数は、valarray<Type> に対して定義されている、対応する関数のシグネチャのように動作しますが、選択された要素のシーケンスのみが影響を受ける点が異なります。 gslice_arrayによって制御されるシーケンスは、slice コンストラクターの 3 つのパラメーター、最初のsliceの最初の要素のインデックス、各slice内の要素の数、および各slice内の要素間の距離によって定義されます。

次に例を示します。

const size_t lv[] = {2, 3};
const size_t dv[] = {7, 2};
const valarray<size_t> len(lv, 2), str(dv, 2);

// va[gslice(3, len, str)] selects elements with
//   indices 3, 5, 7, 10, 12, 14

プロシージャが有効であるためには、これらのインデックスが有効である必要があります。

slice_arrayを宣言して使用する方法の例については、 gslice::gslice の例を参照してください。

要件

ヘッダー:<valarray>

名前空間: std

関連項目

C++ 標準ライブラリのスレッド セーフ