共用方式為


gslice 類別

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

備註

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

  • 起始索引。

  • 類別 valarray<size_t>的長度向量。

  • 類別 valarray<size_t>的步幅向量。

兩個向量的長度必須相同。

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

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

建構函式

建構函式 描述
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中的步幅。

傳回值

預設建構函式會針對起始索引儲存零,以及針對長度和跨度向量儲存零長度向量。 第二個建構函式會針對起始索引儲存 _StartIndex、針對長度陣列儲存 _LenArray,以及針對跨度陣列儲存 _IncArray

備註

gslice 定義 的子集,其中包含多個配量 valarray ,每個配量 valarray 從相同的指定項目開始。 使用數位定義多個配量的能力是和slice::slice之間的gslice唯一差異。 第一個配量具有索引_StartIndex的第一個專案、第一個專案所指定的項目計數,以及的第一個元素_LenArray_IncArray所指定的步幅。 下一組正交配量的第一個元素會由第一個配量指定。 _LenArray 的第二個元素會指定元素數目。 跨度是由 _IncArray 的第二個元素指定。 配量的第三個維度會採用二維數位的元素做為起始元素,並以類似方式繼續。

範例

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

另請參閱

C++標準連結庫中的線程安全性