gslice クラス
の多次元サブセットvalarrayを定義するために使用されるユーティリティ クラスvalarray。 a valarray が配列内のすべての要素を持つ多次元行列と見なされる場合、 gslice 多次元配列からベクターが抽出されます。
注釈
クラスには、型 gslice_arrayのオブジェクトを特徴付けするパラメーターが格納されます。 クラスのオブジェクトがクラスgsliceのオブジェクトの引数として表示される場合、a valarray のサブセットは間接的にvalarray<Type>構築されます。 親 valarray から選択したサブセットを指定する格納された値は次のとおりです。
開始インデックス。
クラス
valarray<size_t>の長さベクトル。クラス
valarray<size_t>のストライド ベクタトル。
これら 2 つのベクターは同じ長さにする必要があります。
a gslice によって定義されたセットが定数のサブセットである場合、そのgsliceセットvalarrayは新しいvalarrayです。 a gslice によって定義されたセットが非再構成valarrayのサブセットである場合、元valarrayのgsliceオブジェクトに対する参照セマンティクスがあります。 非再構成 valarray オブジェクトの評価メカニズムにより、時間とメモリが節約されます。
オブジェクトに対する valarray 操作は、オブジェクトによって定義された gslice ソースサブセットとコピー先サブセットが異なり、すべてのインデックスが有効な場合にのみ保証されます。
コンストラクター
| コンストラクター | 説明 |
|---|---|
gslice |
すべて指定された要素で始まる、valarray の複数のスライスからなる valarray のサブセットを定義します。 |
メンバー関数
| メンバー関数 | 説明 |
|---|---|
size |
valarray の一般的なスライスの要素数を指定する配列の値を検索します。 |
start |
valarray の一般的なスライスの開始インデックスを検索します。 |
stride |
valarray の一般的なスライスの要素間の距離を検索します。 |
要件
ヘッダー:<valarray>
名前空間: std
gslice::gslice
の多次元スライスvalarrayを定義するために使用されるユーティリティ クラスvalarray。
gslice();
gslice(
size_t _StartIndex,
const valarray<size_t>& _LenArray,
const valarray<size_t>& _IncArray);
パラメーター
_StartIndex
valarrayサブセット内の最初の要素のインデックス。
_LenArray
valarray各gslice要素の数を指定します。
_IncArray
valarray各ストライドを指定しますgslice。
戻り値
既定のコンストラクターは、開始インデックスに対してゼロを格納し、長さおよびストライド ベクターに対して長さゼロのベクターを格納します。 2 番目のコンストラクターは、開始インデックスに対して _StartIndex、長さの配列に対して _LenArray、ストライド配列に対して _IncArray を格納します。
注釈
gsliceは、それぞれが同じ指定された要素で開始する複数のvalarrayスライスで構成される a のサブセットvalarrayを定義します。 配列を使用して複数のスライスを定義する機能は、gsliceslice::sliceと . 最初のスライスには、インデックスが 1 つ目の要素、最初の _StartIndex要素で指定された要素の数、および最初の _LenArray要素によって指定された _IncArrayストライドがあります。 次の一連の直交スライスのセットには、最初のスライスで指定された最初の要素が含まれます。 _LenArray の 2 番目の要素は、要素の数を指定します。 ストライドは、_IncArray の 2 番目の要素によって指定されます。 スライスの 3 次元は、2 次元配列の要素を開始要素として受け取り、同様に続行します。
例
// gslice_ctor.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i+=1 )
va [ i ] = i;
cout << "The operand valarray va is:" << endl << "(";
for ( i = 0 ; i < 20 ; i++ )
cout << " " << va [ i ];
cout << " )" << endl;
valarray<size_t> Len ( 2 ), Stride ( 2 );
Len [0] = 4;
Len [1] = 4;
Stride [0] = 7;
Stride [1] = 4;
gslice vaGSlice ( 0, Len, Stride );
vaResult = va [ vaGSlice ];
cout << "The valarray for vaGSlice is vaResult:" << endl
<< "va[vaGSlice] = (";
for ( i = 0 ; i < 8 ; i++ )
cout << " " << vaResult [ i ];
cout << ")" << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 )
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19)
gslice::size
valarray の一般的なスライスの要素数を指定する配列の値を検索します。
valarray<size_t> size() const;
戻り値
の valarray 一般的なスライスの各スライス内の要素の数を指定します valarray。
注釈
このメンバー関数は、格納されているスライスの長さを返します。
例
// gslice_size.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
size_t sizeVA;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i+=1 )
va [ i ] = i;
cout << "The operand valarray va is:\n ( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
sizeVA = va.size ( );
cout << "The size of the valarray is: "
<< sizeVA << "." << endl << endl;
valarray<size_t> Len ( 2 ), Stride ( 2 );
Len [0] = 4;
Len [1] = 4;
Stride [0] = 7;
Stride [1] = 4;
gslice vaGSlice ( 0, Len, Stride );
vaResult = va [ vaGSlice ];
const valarray <size_t> sizeGS = vaGSlice.size ( );
cout << "The valarray for vaGSlice is vaResult:"
<< "\n va[vaGSlice] = ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
cout << "The size of vaResult is:"
<< "\n vaGSlice.size ( ) = ( ";
for ( i = 0 ; i < 2 ; i++ )
cout << sizeGS[ i ] << " ";
cout << ")." << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ).
The size of the valarray is: 20.
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19 ).
The size of vaResult is:
vaGSlice.size ( ) = ( 4 4 ).
gslice::start
valarray の一般的なスライスの開始インデックスを検索します。
size_t start() const;
戻り値
の一般的なスライスの valarray開始インデックス。
例
// gslice_start.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> va ( 20 ), vaResult;
for (i = 0 ; i < 20 ; i+=1 )
va [ i ] = i;
cout << "The operand valarray va is:\n ( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
valarray<size_t> Len ( 2 ), Stride ( 2 );
Len [0] = 4;
Len [1] = 4;
Stride [0] = 7;
Stride [1] = 4;
gslice vaGSlice ( 0, Len, Stride );
vaResult = va [ vaGSlice ];
size_t vaGSstart = vaGSlice.start ( );
cout << "The valarray for vaGSlice is vaResult:"
<< "\n va[vaGSlice] = ( ";
for (i = 0 ; i < 8 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
cout << "The index of the first element of vaResult is: "
<< vaGSstart << "." << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ).
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19 ).
The index of the first element of vaResult is: 0.
gslice::stride
valarray の一般的なスライスの要素間の距離を検索します。
valarray<size_t> stride() const;
戻り値
の valarray 一般的なスライスの各スライス内の要素間の距離を指定します valarray。
例
// gslice_stride.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> va ( 20 ), vaResult;
for (i = 0 ; i < 20 ; i+=1 )
va [ i ] = i;
cout << "The operand valarray va is:\n ( ";
for (i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
valarray<size_t> Len ( 2 ), Stride ( 2 );
Len [0] = 4;
Len [1] = 4;
Stride [0] = 7;
Stride [1] = 4;
gslice vaGSlice ( 0, Len, Stride );
vaResult = va [ vaGSlice ];
const valarray <size_t> strideGS = vaGSlice.stride ( );
cout << "The valarray for vaGSlice is vaResult:"
<< "\n va[vaGSlice] = ( ";
for ( i = 0 ; i < 8 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
cout << "The strides of vaResult are:"
<< "\n vaGSlice.stride ( ) = ( ";
for ( i = 0 ; i < 2 ; i++ )
cout << strideGS[ i ] << " ";
cout << ")." << endl;
}
The operand valarray va is:
( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 ).
The valarray for vaGSlice is vaResult:
va[vaGSlice] = ( 0 4 8 12 7 11 15 19 ).
The strides of vaResult are:
vaGSlice.stride ( ) = ( 7 4 ).