Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Classe
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 ).