Classe gslice
Classe di utilità utilizzata valarray
per definire subset multidimensionali di un oggetto valarray
. Se un valarray
oggetto viene considerato come una matrice multidimensionale con tutti gli elementi di una matrice, estrae gslice
un vettore dalla matrice multidimensionale.
Osservazioni:
La classe archivia i parametri che caratterizzano un oggetto di tipo gslice_array
. Il subset di un valarray
oggetto viene costruito indirettamente quando un oggetto della classe gslice
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.
Vettore di lunghezza della classe
valarray<size_t>
.Vettore stride della classe
valarray<size_t>
.
I due vettori devono avere la stessa lunghezza.
Se il set definito da è gslice
il subset di una costante valarray
, l'oggetto gslice
è un nuovo valarray
oggetto . Se il set definito da è gslice
il sottoinsieme di un oggetto non predefinito valarray
, l'oggetto ha una gslice
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 gslice
oggetti sono distinti e tutti gli indici sono validi.
Costruttori
Costruttore | Descrizione |
---|---|
gslice |
Definisce un subset di un valarray formato da più sezioni del valarray , che iniziano tutte dall'elemento specificato. |
Funzioni membro
Funzione membro | Descrizione |
---|---|
size |
Trova i valori della matrice che specificano il numero di elementi in una sezione generale di un valarray . |
start |
Trova l'indice iniziale di una sezione generale di un valarray . |
stride |
Trova la distanza tra gli elementi in una sezione generale di un valarray . |
Requisiti
Intestazione:<valarray>
Spazio dei nomi: std
gslice::gslice
Classe di utilità utilizzata valarray
per definire sezioni multidimensionali di un oggetto valarray
.
gslice();
gslice(
size_t _StartIndex,
const valarray<size_t>& _LenArray,
const valarray<size_t>& _IncArray);
Parametri
_StartIndex
Indice valarray
del primo elemento nel subset.
_LenArray
Oggetto valarray
che specifica il numero di elementi in ogni gslice
oggetto .
_IncArray
Oggetto valarray
che specifica lo stride in ogni gslice
oggetto .
Valore restituito
Il costruttore predefinito archivia zero per l'indice iniziale e vettori di lunghezza zero per i vettori di lunghezza e stride. Il secondo costruttore archivia _StartIndex
per l'indice iniziale, _LenArray
per la matrice di lunghezza e _IncArray
per la matrice di stride.
Osservazioni:
gslice
definisce un subset di un oggetto valarray
costituito da più sezioni dell'oggetto valarray
che iniziano nello stesso elemento specificato. La possibilità di usare matrici per definire più sezioni è l'unica differenza tra gslice
e slice::slice
. La prima sezione ha un primo elemento con un indice di _StartIndex
, un conteggio di elementi specificato dal primo elemento di _LenArray
e uno stride specificato dal primo elemento di _IncArray
. Nel successivo set di sezioni ortogonali i primi elementi vengono forniti dalla prima sezione. Il secondo elemento di _LenArray
specifica il numero di elementi. Lo stride viene fornito dal secondo elemento di _IncArray
. Una terza dimensione delle sezioni accetta gli elementi della matrice bidimensionale come elementi iniziali e continua in modo analogo.
Esempio
// 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
Trova i valori della matrice che specificano il numero di elementi in una sezione generale di un valarray
.
valarray<size_t> size() const;
Valore restituito
Oggetto valarray
che specifica il numero di elementi in ogni sezione di una sezione generale di un oggetto valarray
.
Osservazioni:
La funzione membro restituisce le lunghezze archiviate delle sezioni.
Esempio
// 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
Trova l'indice iniziale di una sezione generale di un valarray
.
size_t start() const;
Valore restituito
Indice iniziale di una sezione generale di un oggetto valarray
.
Esempio
// 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
Trova la distanza tra gli elementi in una sezione generale di un valarray
.
valarray<size_t> stride() const;
Valore restituito
Oggetto valarray
che specifica le distanze tra gli elementi in ogni sezione di una sezione generale di un oggetto valarray
.
Esempio
// 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 ).