Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Eine Hilfsklasse, die valarray verwendet wird, um multidimensionale Teilmengen einer .valarray Wenn eine valarray multidimensionale Matrix mit allen Elementen in einem Array betrachtet wird, extrahiert der gslice Vektor aus dem multidimensionalen Array.
Hinweise
Die Klasse speichert die Parameter, die ein Objekt vom Typ gslice_arraycharakterisieren. Die Teilmenge einer valarray Klasse wird indirekt konstruiert, wenn ein Objekt der Klasse gslice 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:
Einen Startindex.
Ein Längenvektor der Klasse
valarray<size_t>.Ein Stridevektor der Klasse
valarray<size_t>.
Die beiden Vektoren müssen dieselbe Länge haben.
Wenn der durch eine gslice Konstante definierte Satz die Teilmenge einer Konstante valarrayist, ist dies gslice ein neues valarray. Wenn der von a gslice definierte Satz die Teilmenge eines nichtconstanten valarrayist, weist die gslice 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 gslice Objekte definierten Quell- und Zieluntersätze eindeutig sind und alle Indizes gültig sind.
Konstruktoren
| Konstruktor | Beschreibung |
|---|---|
gslice |
Definiert eine Teilmenge von valarray, die aus mehreren Segmenten von valarray besteht, die alle bei einem angegebenen Element beginnen. |
Memberfunktionen
| Memberfunktion | Beschreibung |
|---|---|
size |
Sucht die Arraywerte durch Angabe der Anzahl von Elementen in einem allgemeinen Segment von valarray. |
start |
Sucht den Startindex eines allgemeinen Segments von valarray. |
stride |
Sucht den Abstand zwischen Elementen in einem allgemeinen Segment von valarray. |
Anforderungen
Header:<valarray>
Namespace: std
gslice::gslice
Eine Hilfsklasse, die valarray verwendet wird, um mehrdimensionale Segmente eines .valarray
gslice();
gslice(
size_t _StartIndex,
const valarray<size_t>& _LenArray,
const valarray<size_t>& _IncArray);
Parameter
_StartIndex
Der valarray Index des ersten Elements in der Teilmenge.
_LenArray
Eine valarray Angabe der Anzahl der Elemente in jedem gslice.
_IncArray
Eine valarray Angabe der Stride in jedem gslice.
Rückgabewert
Der Standardkonstruktor speichert 0 (null) für den Startindex und leere Vektoren für die Längen- und Sprungvektoren. Der zweite Konstruktor speichert _StartIndex für den Startindex, _LenArray für das Längenarray und _IncArray für das Sprungarray.
Hinweise
gslice definiert eine Teilmenge einer valarray , die aus mehreren Segmenten besteht, die valarray jeweils mit demselben angegebenen Element beginnen. Die Möglichkeit, Arrays zum Definieren mehrerer Segmente zu verwenden, ist der einzige Unterschied zwischen gslice und slice::slice. Das erste Segment verfügt über ein erstes Element mit einem Index von _StartIndex, einer Anzahl von Elementen, die durch das erste Element _LenArrayvon , und eine Stride durch das erste Element von _IncArray. Der erste Satz der orthogonalen Segmente hat erste Elemente, die durch das erste Segment angegeben wurden. Das zweite Element _LenArray gibt die Anzahl der Elemente an. Der Sprung wird durch das zweite Element _IncArray angegeben. Eine dritte Dimension von Segmenten würde die Elemente des zweidimensionalen Arrays als die Startelemente übernehmen und analog fortgesetzt.
Beispiel
// 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
Sucht die Arraywerte durch Angabe der Anzahl von Elementen in einem allgemeinen Segment von valarray.
valarray<size_t> size() const;
Rückgabewert
Eine valarray Angabe der Anzahl der Elemente in jedem Segment eines allgemeinen Segments eines .valarray
Hinweise
Die Memberfunktion gibt die gespeicherten Segmentlängen zurück.
Beispiel
// 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
Sucht den Startindex eines allgemeinen Segments von valarray.
size_t start() const;
Rückgabewert
Der Anfangsindex eines allgemeinen Segments eines .valarray
Beispiel
// 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
Sucht den Abstand zwischen Elementen in einem allgemeinen Segment von valarray.
valarray<size_t> stride() const;
Rückgabewert
A valarray specifying the distances between elements in each slice of a general slice of a valarray.
Beispiel
// 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 ).