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 valarray
elementem . Jeśli zestaw zdefiniowany przez element jest gslice
podzbiorem niekonstantego valarray
, gslice
element zawiera semantyka odwołania do oryginalnego valarray
elementu . 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 gslice
obiekcie .
_IncArray
Określenie valarray
kroku w każdym gslice
obiekcie .
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 _LenArray
i 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 ).