slice
-Klasse
Eine Hilfsklasse, die valarray
verwendet wird, um eindimensionale Teilmengen eines übergeordneten Elements valarray
zu 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_array
charakterisieren. 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 valarray
ist, ist dies slice
ein neues valarray
. Wenn der von a slice
definierte Satz die Teilmenge eines nichtconstanten valarray
ist, weist die slice
Referenzsemantik auf das Original valarray
auf. 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.