slice クラス

valarrayの 1 次元サブセットを定義するために使用されるユーティリティ クラスvalarray。 a valarray が配列内のすべての要素を持つ 2 次元行列と見なされる場合、 slice 2 次元配列から 1 次元のベクトルが抽出されます。

注釈

クラスには、型のオブジェクトを特徴付けするパラメーターが格納されます slice_array。 クラスのオブジェクトがクラスsliceのオブジェクトの引数として表示される場合、a valarray のサブセットは間接的にvalarray<Type>構築されます。 親 valarray から選択したサブセットを指定する格納された値は次のとおりです。

  • 内の開始インデックス valarray

  • 全体の長さ、または内の要素の数。slice

  • ストライド、または内の要素 valarrayのインデックス間の距離。

a slice で定義されたセットが定数のサブセットである場合、sliceそのセットvalarrayは新しいvalarrayです。 a slice によって定義されたセットが非再構成valarrayのサブセットである場合、元valarraysliceオブジェクトへの参照セマンティクスがあります。 非再構成 valarray オブジェクトの評価メカニズムは、時間とメモリを節約します。

オブジェクトに対する valarray 操作は、オブジェクトによって slice 定義されたソースとターゲットのサブセットが異なり、すべてのインデックスが有効な場合にのみ保証されます。

コンストラクター

コンストラクター 説明
slice 等しい距離で、指定した要素から始まる要素のコレクションで構成される a のサブセット valarray を定義します。

メンバー関数

メンバー関数 説明
size 内の要素の数を検索します。slicevalarray
start の開始インデックスslicevalarrayを検索します。
stride 内の要素間の距離を検索します。slicevalarray

要件

ヘッダー:<valarray>

名前空間:

slice::size

内の要素の数を検索します。slicevalarray

size_t size() const;

戻り値

a の要素sliceの数。valarray

// 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

等しい距離で、指定した要素から始まる要素のコレクションで構成される a のサブセット 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

の開始インデックスslicevalarrayを検索します。

size_t start() const;

戻り値

の開始インデックスslicevalarray

// 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

内の要素間の距離を検索します。slicevalarray

size_t stride() const;

戻り値

a の要素slice間の距離。valarray

// 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.

関連項目

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