Freigeben über


slice-Klasse

Eine Hilfsklasse, die valarray verwendet wird, um eindimensionale Teilmengen eines übergeordneten Elements valarrayzu definieren. Wird eine valarray zweidimensionale Matrix mit allen Elementen in einem Array betrachtet, extrahiert der slice Vektor in einer Dimension aus dem zweidimensionalen Array.

Hinweise

Die Klasse speichert die Parameter, die ein Objekt vom Typ slice_arraycharakterisieren. Die Teilmenge einer valarray Klasse wird indirekt konstruiert, wenn ein Objekt der Klasse slice als Argument für ein Objekt der Klasse valarray<Type>angezeigt wird. Die gespeicherten Werte, die die aus dem übergeordneten Element valarray ausgewählte Teilmenge angeben, umfassen:

  • Ein Anfangsindex in der valarray.

  • Eine Gesamtlänge oder Anzahl von Elementen in der slice.

  • Ein Stride oder Abstand zwischen den Indizes von Elementen in der valarray.

Wenn der durch eine slice Konstante definierte Satz die Teilmenge einer Konstante valarrayist, ist dies slice ein neues valarray. Wenn der von a slice definierte Satz die Teilmenge eines nichtconstanten valarrayist, weist die slice Referenzsemantik auf das Original valarrayauf. Der Auswertungsmechanismus für nicht zusammenhängende valarray Objekte spart Zeit und Arbeitsspeicher.

Vorgänge für valarray Objekte werden nur garantiert, wenn die durch die slice Objekte definierten Quell- und Zieluntersätze eindeutig sind und alle Indizes gültig sind.

Konstruktoren

Konstruktor Beschreibung
slice Definiert eine Teilmenge eines Elements valarray , das aus einer Auflistung von Elementen besteht, die einen gleichen Abstand voneinander aufweisen und mit einem angegebenen Element beginnen.

Memberfunktionen

Memberfunktion Beschreibung
size Sucht die Anzahl der Elemente in einem von einem slice valarray.
start Sucht den Anfangsindex eines slice einer .valarray
stride Sucht den Abstand zwischen Elementen in einem von einem slice valarray.

Anforderungen

Header:<valarray>

Namespace:std

slice::size

Sucht die Anzahl der Elemente in einem von einem slice valarray.

size_t size() const;

Rückgabewert

Die Anzahl der Elemente in einem slice von einem valarray.

Beispiel

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

Definiert eine Teilmenge eines Elements valarray , das aus einer Auflistung von Elementen besteht, die einen gleichen Abstand voneinander aufweisen und mit einem angegebenen Element beginnen.

slice();

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

Parameter

_StartIndex
Der valarray Index des ersten Elements in der Teilmenge.

_Len
Die Anzahl von Elementen in der Teilmenge.

stride
Der Abstand zwischen Elementen in der Teilmenge.

Rückgabewert

Der Standardkonstruktor speichert Nullen für Startindex, Gesamtlänge und Segment. Der zweite Konstruktor speichert _StartIndex für den Startindex, _Len für die Gesamtlänge und stride für das Segment.

Hinweise

Der stride Wert kann negativ sein.

Beispiel

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

Sucht den Anfangsindex eines slice einer .valarray

size_t start() const;

Rückgabewert

Der Anfangsindex eines slice einer .valarray

Beispiel

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

Sucht den Abstand zwischen Elementen in einem von einem slice valarray.

size_t stride() const;

Rückgabewert

Der Abstand zwischen Elementen in einem von einem slice valarray.

Beispiel

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

Siehe auch

Threadsicherheit in der C++-Standardbibliothek