Aracılığıyla paylaş


slice sınıfı

Bir üst valarrayöğesinin tek boyutlu alt kümelerini tanımlamak için kullanılan bir yardımcı program sınıfıvalarray. bir valarray , bir dizideki tüm öğelerle iki boyutlu bir matris olarak kabul edilirse slice , iki boyutlu diziden bir boyutta bir vektör ayıklar.

Açıklamalar

sınıfı, türünde slice_arraybir nesneyi karakterize eden parametreleri depolar. öğesinin valarray alt kümesi, sınıfın slice 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:

  • içinde valarraybir başlangıç dizini.

  • Içindeki toplam uzunluk veya öğe slicesayısı.

  • içindeki öğelerin valarraydizinleri arasında bir adım veya uzaklık.

tarafından slice tanımlanan küme bir sabitin valarrayalt kümesiyse slice , yeni valarraybir olur. tarafından slice tanımlanan küme, sabit valarrayolmayan bir öğesinin alt kümesiyse , slice ö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 slice tanımlanan kaynak ve hedef alt kümeleri ayrıysa ve tüm dizinler geçerliyse garanti edilir.

Oluşturucular

Oluşturucu Açıklama
slice Birbirinden eşit uzaklıkta olan ve belirtilen bir öğeden başlayan bir öğe koleksiyonundan oluşan bir alt kümesini valarray tanımlar.

Üye işlevleri

Üye işlevi Açıklama
size bir öğesindeki slice valarrayöğe sayısını bulur.
start bir slice öğesinin başlangıç dizinini valarraybulur.
stride bir slice öğesindeki öğeler arasındaki uzaklığı valarraybulur.

Gereksinimler

Üst Bilgi:<valarray>

Ad alanı: std

slice::size

bir öğesindeki slice valarrayöğe sayısını bulur.

size_t size() const;

Dönüş değeri

bir öğesindeki slice valarrayöğelerin sayısı.

Örnek

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

Birbirinden eşit uzaklıkta olan ve belirtilen bir öğeden başlayan bir öğe koleksiyonundan oluşan bir alt kümesini valarray tanımlar.

slice();

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

Parametreler

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

_Len
Alt kümedeki öğelerin sayısı.

stride
Alt kümedeki öğeler arasındaki uzaklık.

Dönüş değeri

Varsayılan oluşturucu başlangıç dizini, toplam uzunluk ve adım için sıfırları depolar. İkinci oluşturucu başlangıç dizini, _Len toplam uzunluk ve stride adım için depolar_StartIndex.

Açıklamalar

Değer stride negatif olabilir.

Örnek

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

bir slice öğesinin başlangıç dizinini valarraybulur.

size_t start() const;

Dönüş değeri

bir öğesinin slice valarraybaşlangıç dizini.

Örnek

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

bir slice öğesindeki öğeler arasındaki uzaklığı valarraybulur.

size_t stride() const;

Dönüş değeri

bir slice öğesindeki öğeler arasındaki uzaklık valarray.

Örnek

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

Ayrıca bkz.

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