Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Clase
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.