Aracılığıyla paylaş


gslice sınıfı

Bunun için valarray bir yardımcı program sınıfı, bir valarrayöğesinin çok boyutlu alt kümelerini tanımlamak için kullanılır. bir valarray dizideki tüm öğelerle çok boyutlu bir matris olarak kabul edilirse gslice , çok boyutlu diziden bir vektör ayıklar.

Açıklamalar

sınıfı, türünde gslice_arraybir nesneyi karakterize eden parametreleri depolar. öğesinin valarray alt kümesi, sınıfın gslice bir nesnesi için valarray<Type>bağımsız değişken olarak göründüğünde dolaylı olarak oluşturulur. Üst valarray öğeden seçilen alt kümeyi belirten depolanan değerler şunlardır:

  • Başlangıç dizini.

  • sınıfının valarray<size_t>uzunluk vektörleri.

  • sınıfının valarray<size_t>bir adım vektör.

İki vektör aynı uzunlukta olmalıdır.

tarafından gslice tanımlanan küme bir sabitin valarrayalt kümesiyse gslice , yeni valarraybir olur. tarafından gslice tanımlanan küme, sabit valarrayolmayan bir öğesinin alt kümesiyse , gslice özgün valarrayöğesine başvuru semantiğine sahiptir. Tutarsız valarray nesneler için değerlendirme mekanizması zaman ve bellek tasarrufu sağlar.

Nesneler üzerindeki valarray işlemler yalnızca nesneler tarafından gslice tanımlanan kaynak ve hedef alt kümeleri ayrıysa ve tüm dizinler geçerliyse garanti edilir.

Oluşturucular

Oluşturucu Açıklama
gslice Bir alt kümesinin, tümü belirtilen bir öğede başlayan birden çok diliminden valarray oluşan bir alt kümesini valarray tanımlar.

Üye işlevleri

Üye işlevi Açıklama
size öğesinin genel bir dilimindeki valarrayöğelerin sayısını belirten dizi değerlerini bulur.
start Bir genel diliminin başlangıç dizinini valarraybulur.
stride öğesinin genel bir dilimindeki öğeler arasındaki uzaklığı valarraybulur.

Gereksinimler

Üst Bilgi:<valarray>

Ad alanı: std

gslice::gslice

Bunun için valarray bir yardımcı program sınıfı, bir valarray'nin çok boyutlu dilimlerini tanımlamak için kullanılır.

gslice();

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

Parametreler

_StartIndex
Alt valarray kümedeki ilk öğenin dizini.

_LenArray
valarray Her gsliceiçindeki öğe sayısını belirten bir .

_IncArray
valarray Her gslicebir içindeki adımı belirten bir .

Dönüş değeri

Varsayılan oluşturucu başlangıç dizini için sıfır, uzunluk ve adım vektörleri için sıfır uzunluklu vektörleri depolar. İkinci oluşturucu başlangıç dizini, _LenArray uzunluk dizisi ve _IncArray stride dizisi için depolar_StartIndex.

Açıklamalar

gslice, her birinin aynı belirtilen öğede başlayan birden çok diliminden valarray oluşan bir valarray alt kümesini tanımlar. Ve arasındaki gslice slice::slicetek fark, birden çok dilim tanımlamak için dizileri kullanabilmektir. İlk dilim, dizinine _StartIndexsahip bir ilk öğeye, ilk öğesi _LenArraytarafından belirtilen öğe sayısına ve ilk öğesi tarafından verilen adıma _IncArraysahiptir. Sonraki ortogonal dilim kümesinde ilk dilim tarafından verilen ilk öğeler bulunur. öğesinin _LenArray ikinci öğesi, öğe sayısını belirtir. Adım, öğesinin ikinci öğesi _IncArraytarafından verilir. Dilimlerin üçüncü bir boyutu, iki boyutlu dizinin öğelerini başlangıç öğeleri olarak alır ve benzer şekilde devam eder.

Örnek

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

öğesinin genel bir dilimindeki valarrayöğelerin sayısını belirten dizi değerlerini bulur.

valarray<size_t> size() const;

Dönüş değeri

Bir valarray genel dilimdeki her dilimdeki öğe sayısını belirten bir valarray.

Açıklamalar

Üye işlevi, dilimlerin depolanan uzunluklarını döndürür.

Örnek

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

Bir genel diliminin başlangıç dizinini valarraybulur.

size_t start() const;

Dönüş değeri

Bir genel diliminin valarraybaşlangıç dizini.

Örnek

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

öğesinin genel bir dilimindeki öğeler arasındaki uzaklığı valarraybulur.

valarray<size_t> stride() const;

Dönüş değeri

bir valarray genel diliminin her dilimindeki öğeler arasındaki uzaklıkları belirten bir valarray.

Örnek

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

Ayrıca bkz.

C++ Standart Kitaplığı'nda iş parçacığı güvenliği