Sdílet prostřednictvím


Třída gslice

Utility třídavalarray, která se používá k definování multidimenzionálních podmnožina .valarray valarray Pokud je považována za multidimenzionální matici se všemi prvky v poli, gslice extrahuje vektor z multidimenzionálního pole.

Poznámky

Třída ukládá parametry, které charakterizují objekt typu gslice_array. Podmnožina objektu valarray je nepřímo vytvořena, když se objekt třídy gslice zobrazí jako argument pro objekt třídy valarray<Type>. Mezi uložené hodnoty, které určují podmnožinu vybranou z nadřazené sady valarray , patří:

  • Počáteční index.

  • Vektor délky třídy valarray<size_t>.

  • Stride vektor třídy valarray<size_t>.

Oba vektory musí mít stejnou délku.

Pokud je sada definovaná gslice podmnožinou konstanty valarray, pak gslice je nová valarray. Pokud je množinou definovanou gslice podmnožinou nekonstantního valarrayobjektu , má odkazová gslice sémantika na původní valarray. Mechanismus vyhodnocení pro nekonstantní valarray objekty šetří čas a paměť.

Operace s valarray objekty jsou zaručeny pouze v případě, že zdrojová a cílová podmnožina definovaná gslice objekty jsou odlišné a všechny indexy jsou platné.

Konstruktory

Konstruktor Popis
gslice Definuje podmnožinu, valarray která se skládá z více řezů valarray , které začínají zadaným prvkem.

Členské funkce

Členová funkce Popis
size Najde maticové hodnoty určující počet prvků v obecném řezu valarray.
start Najde počáteční index obecného řezu valarray.
stride Vyhledá vzdálenost mezi prvky v obecném řezu valarray.

Požadavky

Header:<valarray>

Obor názvů: std

gslice::gslice

Třída nástroje, valarray která se používá k definování multidimenzionálních řezů .valarray

gslice();

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

Parametry

_StartIndex
Index valarray prvního prvku v podmnožině.

_LenArray
Určuje valarray počet prvků v každém gslice.

_IncArray
Určení valarray kroku v každém gslice.

Vrácená hodnota

Výchozí konstruktor ukládá nulu pro počáteční index a vektory nulové délky pro délku a stridové vektory. Druhý konstruktor ukládá _StartIndex počáteční index, _LenArray pro pole délky a _IncArray pro pole kroku.

Poznámky

gslice definuje podmnožinu objektu valarray , který se skládá z více řezů valarray , které každý začíná ve stejném zadaném prvku. Možnost použití polí k definování více řezů je jediným rozdílem mezi gslice a slice::slice. První řez má první prvek s indexem _StartIndex, počet prvků určených prvním prvkem _LenArray, a krok zadaný prvním prvkem _IncArray. Další sada orthogonálních řezů obsahuje první prvky zadané prvním řezem. Druhý prvek _LenArray určuje počet prvků. Stride je dán druhým prvkem _IncArray. Třetí dimenze řezů by jako výchozí prvky bral prvky dvojrozměrného pole a pokračovalo podobně.

Příklad

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

Najde maticové hodnoty určující počet prvků v obecném řezu valarray.

valarray<size_t> size() const;

Vrácená hodnota

Určuje valarray počet prvků v každém řezu obecného řezu valarray.

Poznámky

Členová funkce vrátí uložené délky řezů.

Příklad

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

Najde počáteční index obecného řezu valarray.

size_t start() const;

Vrácená hodnota

Počáteční index obecného řezu valarray.

Příklad

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

Vyhledá vzdálenost mezi prvky v obecném řezu valarray.

valarray<size_t> stride() const;

Vrácená hodnota

Určení valarray vzdáleností mezi prvky v každém řezu obecného řezu valarray.

Příklad

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

Viz také

Zabezpečení vláken ve standardní knihovně C++