Udostępnij za pośrednictwem


Klasa gslice

Klasa valarray narzędzi używana do definiowania wielowymiarowych podzestawów obiektu valarray. Jeśli obiekt valarray jest traktowany jako macierz wielowymiarowa ze wszystkimi elementami w tablicy, wyodrębnia gslice wektor z tablicy wielowymiarowej.

Uwagi

Klasa przechowuje parametry, które scharakteryzują obiekt typu gslice_array. Podzbiór elementu valarray jest pośrednio skonstruowany, gdy obiekt klasy jest wyświetlany jako argument dla obiektu klasy gslice valarray<Type>. Przechowywane wartości, które określają podzestaw wybrany z elementu nadrzędnego valarray , obejmują:

  • Indeks początkowy.

  • Wektor długości klasy valarray<size_t>.

  • Wektor kroku klasy valarray<size_t>.

Te dwa wektory muszą mieć taką samą długość.

Jeśli zestaw zdefiniowany przez element jest gslice podzbiorem stałej valarray, gslice element jest nowym valarrayelementem . Jeśli zestaw zdefiniowany przez element jest gslice podzbiorem niekonstantego valarray, gslice element zawiera semantyka odwołania do oryginalnego valarrayelementu . Mechanizm oceny dla obiektów niekonstantych valarray oszczędza czas i pamięć.

Operacje na valarray obiektach są gwarantowane tylko wtedy, gdy podzestawy źródłowe i docelowe zdefiniowane przez gslice obiekty są odrębne, a wszystkie indeksy są prawidłowe.

Konstruktory

Konstruktor opis
gslice Definiuje podzbiór obiektu valarray , który składa się z wielu wycinków valarray , które zaczynają się od określonego elementu.

Funkcje składowe

Funkcja składowa opis
size Znajduje wartości tablicy określające liczby elementów w ogólnym wycinku elementu valarray.
start Znajduje indeks początkowy ogólnego wycinka obiektu valarray.
stride Znajduje odległość między elementami w ogólnym wycinku elementu valarray.

Wymagania

Header:<valarray>

Przestrzeń nazw: std

gslice::gslice

Klasa valarray narzędzi używana do definiowania wielowymiarowych wycinków obiektu valarray.

gslice();

gslice(
    size_t _StartIndex,
    const valarray<size_t>& _LenArray,
    const valarray<size_t>& _IncArray);

Parametry

_StartIndex
Indeks valarray pierwszego elementu w podzestawie.

_LenArray
Określenie valarray liczby elementów w każdym gsliceobiekcie .

_IncArray
Określenie valarray kroku w każdym gsliceobiekcie .

Wartość zwracana

Domyślny konstruktor przechowuje zero dla indeksu początkowego i wektorów o zerowej długości dla wektorów długości i kroku. Drugi konstruktor przechowuje _StartIndex indeks początkowy, _LenArray tablicę długości i _IncArray tablicę kroków.

Uwagi

gslice Definiuje podzbiór obiektu valarray , który składa się z wielu wycinków valarray , które zaczynają się od tego samego określonego elementu. Możliwość używania tablic do definiowania wielu wycinków jest jedyną różnicą między gslice i slice::slice. Pierwszy wycinek ma pierwszy element z indeksem _StartIndex, liczbę elementów określonych przez pierwszy element elementu _LenArrayi krok podany przez pierwszy element ._IncArray Następny zestaw wycinków ortogonalnych zawiera pierwsze elementy podane przez pierwszy wycinek. Drugi element elementu _LenArray określa liczbę elementów. Krok jest podawany przez drugi element elementu _IncArray. Trzeci wymiar wycinków będzie przyjmować elementy tablicy dwuwymiarowej jako elementy początkowe i kontynuować analogicznie.

Przykład

// 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

Znajduje wartości tablicy określające liczby elementów w ogólnym wycinku elementu valarray.

valarray<size_t> size() const;

Wartość zwracana

Określenie valarray liczby elementów w każdym wycinku ogólnego wycinka obiektu valarray.

Uwagi

Funkcja składowa zwraca przechowywane długości wycinków.

Przykład

// 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

Znajduje indeks początkowy ogólnego wycinka obiektu valarray.

size_t start() const;

Wartość zwracana

Indeks początkowy ogólnego wycinka obiektu valarray.

Przykład

// 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

Znajduje odległość między elementami w ogólnym wycinku elementu valarray.

valarray<size_t> stride() const;

Wartość zwracana

Określenie valarray odległości między elementami w każdym wycinku ogólnego wycinka obiektu valarray.

Przykład

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

Zobacz też

Bezpieczeństwo wątków w standardowej bibliotece języka C++