共用方式為


slice 類別

的公用程式類別 valarray ,用來定義父 valarray代 的一維子集。 valarray如果被視為具有陣列中所有元素的二維矩陣,則會slice從二維陣列中擷取一個維度中的向量。

備註

類別會儲存參數,以描述 類型的 slice_array物件。 當類別的對象 valarray 顯示為 類別 slice 物件的自變數時,會間接建構 的 valarray<Type>子集。 指定從父 valarray 代選取的子集的預存值包括:

  • 中的 valarray起始索引。

  • 中的總長度或項目 slice數。

  • 中專案 valarray索引之間的步幅或距離。

如果所 slice 定義的集合是常數 valarray的子集,則 slice 為新的 valarray。 如果 所 slice 定義的集合是非常數 valarray的子集,則 slice 具有原始 valarray的參考語意。 非常值 valarray 物件的評估機制可節省時間和記憶體。

只有在物件所slice定義的來源和目的地子集相異且所有索引都有效時,才會保證物件上的valarray作業。

建構函式

建構函式 描述
slice 定義 的子集 valarray ,其中包含相等距離且從指定項目開始的專案集合。

成員函式

成員函數 描述
size 尋找中的 slice valarray項目數目。
start 尋找的slicevalarray起始索引。
stride 尋找 中slicevalarray專案之間的距離。

需求

標頭:<valarray>

命名空間std

slice::size

尋找中的 slice valarray項目數目。

size_t size() const;

傳回值

中的 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

定義 的子集 valarray ,其中包含相等距離且從指定項目開始的專案集合。

slice();

slice(
    size_t _StartIndex,
    size_t _Len,
    size_t stride);

參數

_StartIndex
valarray 集中第一個專案的索引。

_Len
子集中的項目數。

stride
子集中項目之間的距離。

傳回值

預設的建構函式會針對起始索引、總長度及分散儲存零。 第二個建構函式會針對起始索引儲存 _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;

傳回值

中的 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++標準連結庫中的線程安全性