Udostępnij przez


Klasa slice

Klasa narzędzi używana do valarray definiowania jednowymiarowych podzestawów elementu nadrzędnego valarray. valarray Jeśli obiekt jest traktowany jako dwuwymiarowa macierz ze wszystkimi elementami w tablicy, wyodrębnia slice wektor w jednym wymiarze z tablicy dwuwymiarowej.

Uwagi

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

  • Indeks początkowy w pliku valarray.

  • Całkowita długość lub liczba elementów w obiekcie slice.

  • Krok lub odległość między indeksami elementów w obiekcie valarray.

Jeśli zestaw zdefiniowany przez element jest slice podzbiorem stałej valarray, slice element jest nowym valarrayelementem . Jeśli zestaw zdefiniowany przez element jest slice podzbiorem niekonstantego valarray, slice 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 slice obiekty są odrębne, a wszystkie indeksy są prawidłowe.

Konstruktory

Konstruktor opis
slice Definiuje podzbiór valarray obiektu, który składa się z kolekcji elementów, które są równe odległości od siebie i które zaczynają się od określonego elementu.

Funkcje składowe

Funkcja składowa opis
size Znajduje liczbę elementów w obiekcie slicevalarray.
start Znajduje indeks początkowy obiektu slice .valarray
stride Znajduje odległość między elementami w obiekcie slicevalarray.

Wymagania

Header:<valarray>

Obszaru nazw:std

slice::size

Znajduje liczbę elementów w obiekcie slicevalarray.

size_t size() const;

Wartość zwracana

Liczba elementów w obiekcie slicevalarray.

Przykład

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

Definiuje podzbiór valarray obiektu, który składa się z kolekcji elementów, które są równe odległości od siebie i które zaczynają się od określonego elementu.

slice();

slice(
    size_t _StartIndex,
    size_t _Len,
    size_t stride);

Parametry

_StartIndex
Indeks valarray pierwszego elementu w podzestawie.

_Len
Liczba elementów w podzestawie.

stride
Odległość między elementami w podzestawie.

Wartość zwracana

Domyślny konstruktor przechowuje zera dla indeksu początkowego, całkowitej długości i kroku. Drugi konstruktor przechowuje _StartIndex indeks początkowy, _Len łączną długość i stride dla kroku.

Uwagi

Wartość może być ujemna stride .

Przykład

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

Znajduje indeks początkowy obiektu slice .valarray

size_t start() const;

Wartość zwracana

Indeks początkowy obiektu slicevalarray.

Przykład

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

Znajduje odległość między elementami w obiekcie slicevalarray.

size_t stride() const;

Wartość zwracana

Odległość między elementami w obiekcie slicevalarray.

Przykład

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

Zobacz też

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