gslice (Clase)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Clase de utilidad para valarray que se usa para definir subconjuntos multidimensionales de una valarray. Si una valarray se considera como una matriz multidimensional con todos los elementos de una matriz, el segmento extrae un vector de la matriz multidimensional.

La clase almacena los parámetros que caracterizan a un objeto de tipo gslice_array. El subconjunto de una valarray indirectamente se crea cuando un objeto de clase gslice aparece como un argumento para un objeto de clase valarray<>>. 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>.</size_t>

  • Un vector de stride de clase valarray<size_t>.</size_t>

Los dos vectores deben tener la misma longitud.

Si el conjunto definido por un gslice es el subconjunto de una valarray de constantes, el gslice es una nueva valarray. Si el conjunto definido por un gslice es el subconjunto de una valarray de no constantes, el gslice tiene semántica de referencia a la valarray original. El mecanismo de evaluación para valarrays de no constantes ahorra tiempo y memoria.

Las operaciones en valarrays solo se garantizan si los subconjuntos de origen y de destino definidos por los gslices son distintos y todos los índices son válidos.

Constructores

gsliceDefine un subconjunto de un valarray que consta de varios segmentos de la valarray que todas comienzan a partir de un elemento especificado.

Funciones miembro

tamañoBusca los valores de la matriz especificando el número de elementos en un segmento general de un valarray.
InicioBusca el índice inicial de un segmento general de un valarray.
STRIDEBusca la distancia entre los elementos de un segmento general de un valarray.

Encabezado:<>>

Espacio de nombres: std

Clase de utilidad para valarray que se usa para definir segmentos 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 la valarray del primer elemento en el subconjunto.

_LenArray
Una matriz que especifica el número de elementos en cada sector.

_IncArray
Una matriz que especifica el intervalo en cada sector.

Valor devuelto

El constructor predeterminado almacena cero para el índice de inicio y los vectores de longitud cero para los vectores de longitud y stride. El segundo constructor los almacenes _StartIndex para el índice inicial, _LenArray para la matriz de longitud y _IncArray para la matriz de stride.

Comentarios

gslice define un subconjunto de una valarray que consta de varios segmentos de la valarray que ha especificado cada inicio al mismo elemento. La capacidad de usar matrices para definir varios sectores es la única diferencia entre gslice y slice:: Slice. El primer segmento tiene un primer elemento con un índice de _StartIndex, un número de elementos especificado por el primer elemento de _LenArrayy 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 elementos de la partida y continuar de forma 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)  

Busca valores de la matriz que especifica el número de elementos en un segmento de una valarray general.

valarray<size_t> size() const;

Valor devuelto

Valarray que se especifica el número de elementos en cada segmento de un segmento de una valarray general.

Comentarios

La función miembro devuelve las longitudes de los segmentos almacenadas.

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 ).  

Busca el índice inicial de un segmento de una valarray general.

size_t start() const;

Valor devuelto

Índice inicial de un segmento de una valarray general.

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.  

Busca la distancia entre los elementos de un segmento de una valarray general.

valarray<size_t> stride() const;

Valor devuelto

Una valarray especificando las distancias entre los elementos de cada segmento de un segmento de una valarray general.

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 ).  

Seguridad para subprocesos en la biblioteca estándar de C++

Mostrar: