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 |
尋找的slice valarray 起始索引。 |
stride |
尋找 中slice valarray 專案之間的距離。 |
需求
標頭:<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
尋找的slice
valarray
起始索引。
size_t start() const;
傳回值
的slice
valarray
起始索引。
範例
// 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
尋找 中slice
valarray
專案之間的距離。
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.