Classe slice
Classe di utilità utilizzata valarray
per definire subset unidimensionali di un elemento padre valarray
. Se un valarray
oggetto viene considerato come una matrice bidimensionale con tutti gli elementi di una matrice, estrae slice
un vettore in una dimensione dalla matrice bidimensionale.
Osservazioni:
La classe archivia i parametri che caratterizzano un oggetto di tipo slice_array
. Il subset di un valarray
oggetto viene costruito indirettamente quando un oggetto della classe slice
viene visualizzato come argomento per un oggetto della classe valarray<Type>
. I valori archiviati che specificano il subset selezionato dall'elemento padre valarray
includono:
Indice iniziale in
valarray
.Lunghezza totale o numero di elementi nell'oggetto
slice
.Stride o distanza tra gli indici degli elementi nell'oggetto
valarray
.
Se il set definito da è slice
il subset di una costante valarray
, l'oggetto slice
è un nuovo valarray
oggetto . Se il set definito da è slice
il sottoinsieme di un oggetto non predefinito valarray
, l'oggetto ha una slice
semantica di riferimento per l'oggetto originale valarray
. Il meccanismo di valutazione per gli oggetti non costanti valarray
consente di risparmiare tempo e memoria.
Le operazioni sugli valarray
oggetti sono garantite solo se i subset di origine e di destinazione definiti dagli slice
oggetti sono distinti e tutti gli indici sono validi.
Costruttori
Costruttore | Descrizione |
---|---|
slice |
Definisce un subset di un oggetto valarray costituito da una raccolta di elementi separati da una distanza uguale e che iniziano in corrispondenza di un elemento specificato. |
Funzioni membro
Funzione membro | Descrizione |
---|---|
size |
Trova il numero di elementi in un slice oggetto di .valarray |
start |
Trova l'indice iniziale di un slice oggetto .valarray |
stride |
Trova la distanza tra gli elementi di un slice oggetto valarray . |
Requisiti
Intestazione:<valarray>
Spazio dei nomi: std
slice::size
Trova il numero di elementi in un slice
oggetto di .valarray
size_t size() const;
Valore restituito
Numero di elementi in un slice
oggetto di .valarray
Esempio
// 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
Definisce un subset di un oggetto valarray
costituito da una raccolta di elementi separati da una distanza uguale e che iniziano in corrispondenza di un elemento specificato.
slice();
slice(
size_t _StartIndex,
size_t _Len,
size_t stride);
Parametri
_StartIndex
Indice valarray
del primo elemento nel subset.
_Len
Numero di elementi del subset.
stride
Distanza tra gli elementi del subset.
Valore restituito
Il costruttore predefinito archivia zero per l'indice iniziale, la lunghezza totale e lo stride. Il secondo costruttore archivia _StartIndex
per l'indice iniziale, _Len
per la lunghezza totale e stride
per lo stride.
Osservazioni:
Il stride
valore può essere negativo.
Esempio
// 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
Trova l'indice iniziale di un slice
oggetto .valarray
size_t start() const;
Valore restituito
Indice iniziale di un slice
oggetto di .valarray
Esempio
// 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
Trova la distanza tra gli elementi di un slice
oggetto valarray
.
size_t stride() const;
Valore restituito
Distanza tra gli elementi di slice
un oggetto valarray
.
Esempio
// 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.