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 conjuntos multidimensionales de una valarray. Si una valarray se considera como una matriz multidimensional con todos los elementos de una matriz, gslice extrae un vector de la matriz multidimensional.
Comentarios
La clase almacena los parámetros que caracterizan a un objeto de tipo gslice_array. El subconjunto de una valarray se crea indirectamente cuando un objeto de clase gslice aparece como argumento de un objeto de clase valarray<Type>. Los valores almacenados que especifican el subconjunto seleccionado de la valarray primaria incluyen:
Un índice de inicio.
Un vector de longitud de la clase
valarray<size_t>.Un vector de intervalo de la clase
valarray<size_t>.
Los dos vectores deben tener la misma longitud.
Si el conjunto definido por un gslice es el subconjunto de una constante valarray, gslice es un valarray nuevo. Si el conjunto definido por un gslice es el subconjunto de una valarray no constante, gslice 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 gslice son distintos y todos los índices son válidos.
Constructores
| Constructor | Descripción |
|---|---|
gslice |
Define un subconjunto de un valarray que consta de varios segmentos de la valarray que todas comienzan a partir de un elemento especificado. |
Funciones miembro
| Función de miembro | Descripción |
|---|---|
size |
Busca los valores de la matriz especificando el número de elementos en un segmento general de un valarray. |
start |
Busca el índice inicial de un segmento general de un valarray. |
stride |
Busca la distancia entre los elementos de un segmento general de un valarray. |
Requisitos
Encabezado:<valarray>
Espacio de nombres: std
gslice::gslice
Clase de utilidad para valarray que se usa para definir sectores multidimensionales de una valarray.
gslice();
gslice(
size_t _StartIndex,
const valarray<size_t>& _LenArray,
const valarray<size_t>& _IncArray);
Parámetros
_StartIndex
El índice de valarray del primer elemento del subconjunto.
_LenArray
Una valarray que especifica el número de elementos de cada gslice.
_IncArray
Una valarray que especifica el intervalo de cada gslice.
Valor devuelto
El constructor predeterminado almacena cero para el índice de inicio y vectores de longitud cero para los vectores de longitud e intervalo. El segundo constructor almacena _StartIndex para el índice de inicio, _LenArray para la matriz de longitud y _IncArray para la matriz de intervalo.
Comentarios
gslice define un subconjunto de un valarray que consta de varios segmentos de la valarray que empiezan todas en el mismo elemento especificado. La única diferencia entre gslice y slice::slice es la capacidad de usar matrices para definir varios segmentos. El primer segmento tiene un primer elemento con un índice de _StartIndex, un recuento de elementos especificado por el primer elemento de _LenArray y un intervalo especificado por el primer elemento de _IncArray. El siguiente conjunto de segmentos ortogonales tiene primeros elementos proporcionados por el primer segmento. El segundo elemento de _LenArray especifica el número de elementos. El intervalo viene determinado por el segundo elemento de _IncArray. Una tercera dimensión de segmentos podría tomar los elementos de la matriz bidimensional como los elementos de inicio y continuar de manera análoga.
Ejemplo
// 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
Busca los valores de la matriz especificando el número de elementos en un segmento general de un valarray.
valarray<size_t> size() const;
Valor devuelto
valarray que especifica el número de elementos de cada segmento de un segmento general de una valarray.
Comentarios
La función miembro devuelve las longitudes almacenadas de los segmentos.
Ejemplo
// 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
Busca el índice inicial de un segmento general de un valarray.
size_t start() const;
Valor devuelto
Índice inicial de un segmento general de una valarray.
Ejemplo
// 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
Busca la distancia entre los elementos de un segmento general de un valarray.
valarray<size_t> stride() const;
Valor devuelto
valarray que especifica las distancias entre elementos de cada segmento de un segmento general de una valarray.
Ejemplo
// 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 ).