Classe slice
Classe utilitaire utilisée valarray
pour définir des sous-ensembles unidimensionnels d’un parent valarray
. Si une valarray
matrice à deux dimensions est considérée comme une matrice à deux dimensions avec tous les éléments d’un tableau, elle slice
extrait un vecteur dans une dimension hors du tableau à deux dimensions.
Notes
La classe stocke les paramètres qui caractérisent un objet de type slice_array
. Le sous-ensemble d’un valarray
objet est indirectement construit lorsqu’un objet de classe slice
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 :
Index de départ dans le
valarray
.Longueur totale ou nombre d’éléments dans le
slice
.Une progression, ou une distance entre les indices des éléments dans le
valarray
.
Si l’ensemble défini par un slice
est le sous-ensemble d’une constante valarray
, il slice
s’agit d’un nouveau valarray
. Si l’ensemble défini par un slice
est le sous-ensemble d’un élément nonconstant valarray
, la slice
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 slice
objets sont distincts et que tous les index sont valides.
Constructeurs
Constructeur | Description |
---|---|
slice |
Définit un sous-ensemble d’un valarray élément constitué d’une collection d’éléments qui sont à distance égale et qui commencent à un élément spécifié. |
Fonctions Membre
Fonction membre | Description |
---|---|
size |
Recherche le nombre d’éléments d’un slice valarray . |
start |
Recherche l’index de départ d’un slice valarray objet . |
stride |
Recherche la distance entre les éléments d’un slice valarray . |
Spécifications
Header :<valarray>
Espace de noms : std
slice::size
Recherche le nombre d’éléments d’un slice
valarray
.
size_t size() const;
Valeur retournée
Nombre d’éléments d’un slice
valarray
.
Exemple
// 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
Définit un sous-ensemble d’un valarray
élément constitué d’une collection d’éléments qui sont à distance égale et qui commencent à un élément spécifié.
slice();
slice(
size_t _StartIndex,
size_t _Len,
size_t stride);
Paramètres
_StartIndex
Index valarray
du premier élément du sous-ensemble.
_Len
Nombre d’éléments dans le sous-ensemble.
stride
Distance entre les éléments dans le sous-ensemble.
Valeur retournée
Le constructeur par défaut stocke des zéros pour l’index de départ, la longueur totale et le stride. Le deuxième constructeur stocke _StartIndex
pour l’index de départ, _Len
pour la longueur totale et stride
pour le stride.
Notes
La stride
valeur peut être négative.
Exemple
// 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
Recherche l’index de départ d’un slice
valarray
objet .
size_t start() const;
Valeur retournée
Index de départ d’un slice
valarray
.
Exemple
// 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
Recherche la distance entre les éléments d’un slice
valarray
.
size_t stride() const;
Valeur retournée
Distance entre les éléments d’un slice
valarray
.
Exemple
// 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.