slice
クラス
親valarray
の 1 次元サブセットを定義するために使用するvalarray
ユーティリティ クラス。 valarray
が配列内のすべての要素を持つ 2 次元行列と見なされる場合、slice
は 2 次元配列から 1 次元のベクトルを抽出します。
解説
クラスには、 slice_array
型のオブジェクトを特徴付けするパラメーターが格納されます。 valarray
のサブセットは、クラス slice
のオブジェクトがクラス valarray<Type>
のオブジェクトの引数として表示される場合に間接的に構築されます。 親 valarray
から選択したサブセットを指定する格納された値は次のとおりです。
valarray
内の開始インデックス。slice
内の要素の合計数。ストライド、または
valarray
内の要素のインデックス間の距離。
slice
によって定義されたセットが定数valarray
のサブセットである場合、slice
は新しいvalarray
になります。 slice
によって定義されたセットが非valarray
のサブセットである場合、slice
には元のvalarray
への参照セマンティクスがあります。 非 valarray
オブジェクトの評価メカニズムにより、時間とメモリが節約されます。
valarray
オブジェクトに対する操作は、slice
オブジェクトによって定義されたソースとターゲットのサブセットが異なり、すべてのインデックスが有効な場合にのみ保証されます。
コンストラクター
コンストラクター | 説明 |
---|---|
slice |
距離が等しく、指定した要素から始まる要素のコレクションで構成される valarray のサブセットを定義します。 |
メンバー関数
メンバー関数 | 説明 |
---|---|
size |
valarray のslice 内の要素の数を検索します。 |
start |
valarray のslice の開始インデックスを検索します。 |
stride |
valarray のslice 内の要素間の距離を検索します。 |
要件
ヘッダー:<valarray>
名前空間: std
slice::size
valarray
のslice
内の要素の数を検索します。
size_t size() const;
戻り値
valarray
のslice
内の要素の数。
例
// slice_size.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
size_t sizeVA, sizeVAR;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i += 1 )
va [ i ] = i+1;
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;
slice vaSlice ( 3 , 6 , 3 );
vaResult = va [ vaSlice ];
cout << "The slice of valarray va is vaResult = "
<< "va[slice( 3, 6, 3)] =\n ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
sizeVAR = vaSlice.size ( );
cout << "The size of slice vaSlice is: "
<< sizeVAR << "." << endl;
}
The operand valarray va is:
( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ).
The size of the valarray is: 20.
The slice of valarray va is vaResult = va[slice( 3, 6, 3)] =
( 4 7 10 13 16 19 ).
The size of slice vaSlice is: 6.
slice::slice
距離が等しく、指定した要素から始まる要素のコレクションで構成される valarray
のサブセットを定義します。
slice();
slice(
size_t _StartIndex,
size_t _Len,
size_t stride);
パラメーター
_StartIndex
サブセット内の最初の要素の valarray
インデックス。
_Len
サブセット内の要素数。
stride
サブセット内の要素間の距離。
戻り値
既定のコンストラクターは、開始インデックス、長さの合計、およびストライドに対して 0 を格納します。 2 番目のコンストラクターは、開始インデックスには _StartIndex
、長さの合計には _Len
、ストライドには stride
を格納します。
解説
stride
値は負の値になる場合があります。
例
// slice_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 ] = 2 * (i + 1 );
cout << "The operand valarray va is:\n( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
slice vaSlice ( 1 , 7 , 3 );
vaResult = va [ vaSlice ];
cout << "\nThe slice of valarray va is vaResult:"
<< "\nva[slice( 1, 7, 3)] = ( ";
for ( i = 0 ; i < 7 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
}
The operand valarray va is:
( 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 ).
The slice of valarray va is vaResult:
va[slice( 1, 7, 3)] = ( 4 10 16 22 28 34 40 ).
slice::start
valarray
のslice
の開始インデックスを検索します。
size_t start() const;
戻り値
valarray
のslice
の開始インデックス。
例
// slice_start.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
size_t startVAR;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i += 1 )
va [ i ] = i+1;
cout << "The operand valarray va is:\n ( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
slice vaSlice ( 3 , 6 , 3 );
vaResult = va [ vaSlice ];
cout << "The slice of valarray va is vaResult = "
<< "va[slice( 3, 6, 3)] =\n ( ";
for ( i = 0 ; i < 6 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
startVAR = vaSlice.start ( );
cout << "The start index of slice vaSlice is: "
<< startVAR << "." << endl;
}
The operand valarray va is:
( 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ).
The slice of valarray va is vaResult = va[slice( 3, 6, 3)] =
( 4 7 10 13 16 19 ).
The start index of slice vaSlice is: 3.
slice::stride
valarray
のslice
内の要素間の距離を検索します。
size_t stride() const;
戻り値
valarray
のslice
内の要素間の距離。
例
// slice_stride.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
size_t strideVAR;
valarray<int> va ( 20 ), vaResult;
for ( i = 0 ; i < 20 ; i += 1 )
va [ i ] = 3 * ( i + 1 );
cout << "The operand valarray va is:\n ( ";
for ( i = 0 ; i < 20 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
slice vaSlice ( 4 , 5 , 3 );
vaResult = va [ vaSlice ];
cout << "The slice of valarray va is vaResult = "
<< "va[slice( 4, 5, 3)] =\n ( ";
for ( i = 0 ; i < 5 ; i++ )
cout << vaResult [ i ] << " ";
cout << ")." << endl;
strideVAR = vaSlice.stride ( );
cout << "The stride of slice vaSlice is: "
<< strideVAR << "." << endl;
}
The operand valarray va is:
( 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 ).
The slice of valarray va is vaResult = va[slice( 4, 5, 3)] =
( 15 24 33 42 51 ).
The stride of slice vaSlice is: 3.