Classe gslice
Classe utilitaire utilisée valarray
pour définir des sous-ensembles multidimensionnels d’un valarray
. Si une valarray
matrice multidimensionnelle est considérée comme une matrice multidimensionnelle avec tous les éléments d’un tableau, elle gslice
extrait un vecteur à partir du tableau multidimensionnel.
Notes
La classe stocke les paramètres qui caractérisent un objet de type gslice_array
. Le sous-ensemble d’un valarray
objet est indirectement construit lorsqu’un objet de classe gslice
apparaît comme un argument pour un objet de classe valarray<Type>
. Les valeurs stockées qui spécifient le sous-ensemble sélectionné à partir du parent valarray
sont les suivantes :
un index de départ ;
Vecteur de longueur de classe
valarray<size_t>
.Vecteur de progression de classe
valarray<size_t>
.
Les deux vecteurs doivent avoir la même longueur.
Si l’ensemble défini par un gslice
est le sous-ensemble d’une constante valarray
, il gslice
s’agit d’un nouveau valarray
. Si l’ensemble défini par un gslice
est le sous-ensemble d’un élément nonconstant valarray
, la gslice
sémantique de référence est définie sur l’original valarray
. Le mécanisme d’évaluation des objets nonconstants valarray
permet de gagner du temps et de la mémoire.
Les opérations sur valarray
les objets sont garanties uniquement si les sous-ensembles source et de destination définis par les gslice
objets sont distincts et que tous les index sont valides.
Constructeurs
Constructeur | Description |
---|---|
gslice |
Définit un sous-ensemble d'un valarray composé de plusieurs sections du valarray qui commencent toutes à un élément spécifié. |
Fonctions Membre
Fonction membre | Description |
---|---|
size |
Recherche les valeurs de tableau spécifiant le nombre d'éléments dans un secteur général d'un valarray . |
start |
Recherche l'index de départ d'un secteur général d'un valarray . |
stride |
Recherche la distance entre des éléments dans un secteur général d'un valarray . |
Spécifications
Header :<valarray>
Espace de noms : std
gslice::gslice
Classe utilitaire utilisée valarray
pour définir des tranches multidimensionnelles d’un valarray
.
gslice();
gslice(
size_t _StartIndex,
const valarray<size_t>& _LenArray,
const valarray<size_t>& _IncArray);
Paramètres
_StartIndex
Index valarray
du premier élément du sous-ensemble.
_LenArray
Spécification valarray
du nombre d’éléments dans chaque gslice
.
_IncArray
Spécification valarray
de la progression dans chaque gslice
.
Valeur retournée
Le constructeur par défaut stocke zéro pour l’index de départ et les vecteurs de longueur nulle pour les vecteurs de longueur et stride. Le deuxième constructeur stocke _StartIndex
pour l’index de départ, _LenArray
pour le tableau de longueur et _IncArray
pour le tableau stride.
Notes
gslice
définit un sous-ensemble d’un valarray
qui se compose de plusieurs tranches du valarray
point de départ à l’élément spécifié. La possibilité d’utiliser des tableaux pour définir plusieurs tranches est la seule différence entre gslice
et slice::slice
. La première tranche a un premier élément avec un index de _StartIndex
, un nombre d’éléments spécifié par le premier élément de _LenArray
, et un pas donné par le premier élément de _IncArray
. L’ensemble de sections orthogonales suivant a ses premiers éléments donnés par la première section. Le deuxième élément de _LenArray
spécifie le nombre d’éléments. Le stride est fourni par le deuxième élément de _IncArray
. Une troisième dimension de tranches prendrait les éléments du tableau à deux dimensions comme éléments de départ et continuer de façon analogue.
Exemple
// 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
Recherche les valeurs de tableau spécifiant le nombre d'éléments dans un secteur général d'un valarray
.
valarray<size_t> size() const;
Valeur retournée
Spécification valarray
du nombre d’éléments dans chaque tranche d’une tranche générale d’un valarray
.
Notes
La fonction membre retourne les longueurs de sections stockées.
Exemple
// 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
Recherche l'index de départ d'un secteur général d'un valarray
.
size_t start() const;
Valeur retournée
Index de départ d’une tranche générale d’un valarray
.
Exemple
// 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
Recherche la distance entre des éléments dans un secteur général d'un valarray
.
valarray<size_t> stride() const;
Valeur retournée
Spécification valarray
des distances entre les éléments dans chaque tranche d’une tranche générale d’un valarray
.
Exemple
// 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 ).