Clase slice
Clase de utilidad para valarray
que se usa para definir subconjuntos unidimensionales de una valarray
primaria. Si una valarray
se considera como una matriz bidimensional con todos los elementos de una matriz, slice
extrae un vector en una dimensión de la matriz bidimensional.
Comentarios
La clase almacena los parámetros que caracterizan a un objeto de tipo slice_array
. El subconjunto de una valarray
se crea indirectamente cuando un objeto de clase slice
aparece como argumento de un objeto de clase valarray<Type>
. Los valores almacenados que especifican el subconjunto seleccionado de la valarray
primaria incluyen:
Índice inicial de la
valarray
.Longitud total o número de elementos en el
slice
.Un intervalo, o la distancia entre índices de los elementos de la
valarray
.
Si el conjunto definido por un slice
es el subconjunto de una constante valarray
, slice
es un valarray
nuevo. Si el conjunto definido por un slice
es el subconjunto de una valarray
no constante, slice
tiene semántica de referencia a la valarray
original. El mecanismo de evaluación para objetos valarray
no constantes ahorra tiempo y memoria.
Las operaciones en objetos valarray
solo se garantizan si los subconjuntos de origen y de destino definidos por los objetos slice
son distintos y todos los índices son válidos.
Constructores
Constructor | Descripción |
---|---|
slice |
Define un subconjunto de un valarray que consta de una colección de elementos equidistantes y que comienzan en un elemento especificado. |
Funciones miembro
Función de miembro | Descripción |
---|---|
size |
Busca el número de elementos en un slice de una valarray . |
start |
Busca el índice inicial de un slice de una valarray . |
stride |
Busca la distancia entre los elementos de un slice de una valarray . |
Requisitos
Encabezado:<valarray>
Espacio de nombres: std
slice::size
Busca el número de elementos en un slice
de una valarray
.
size_t size() const;
Valor devuelto
Número de elementos en un slice
de una valarray
.
Ejemplo
// 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
Define un subconjunto de un valarray
que consta de una colección de elementos equidistantes y que comienzan en un elemento especificado.
slice();
slice(
size_t _StartIndex,
size_t _Len,
size_t stride);
Parámetros
_StartIndex
El índice de valarray
del primer elemento del subconjunto.
_Len
El número de elementos del subconjunto.
stride
La distancia entre los elementos del subconjunto.
Valor devuelto
El constructor predeterminado almacena ceros para el índice de inicio, la longitud total y el intervalo. El segundo constructor almacena _StartIndex
para el índice de inicio, _Len
para la longitud total y stride
para el intervalo.
Comentarios
El valor stride
puede ser negativo.
Ejemplo
// 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
Busca el índice inicial de un slice
de una valarray
.
size_t start() const;
Valor devuelto
Índice inicial de un slice
de una valarray
.
Ejemplo
// 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
Busca la distancia entre los elementos de un slice
de una valarray
.
size_t stride() const;
Valor devuelto
Distancia entre los elementos de un slice
de una valarray
.
Ejemplo
// 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.