mask_array
-Klasse
Eine interne Hilfsklassenvorlage, die Objekte unterstützt, die Teilmengen von übergeordneten valarray
Objekten sind, die mit einem booleschen Ausdruck angegeben werden, indem Vorgänge zwischen den Untermengenarrays bereitgestellt werden.
Hinweise
Die Klasse beschreibt ein Objekt, das einen Verweis auf ein Objekt va
der Klasse valarray<Type>
zusammen mit einem Objekt ba
der Klasse valarray<bool>
speichert, das die Abfolge von Elementen beschreibt, die aus dem valarray<Type>
Objekt ausgewählt werden sollen.
Sie erstellen ein mask_array<Type>
Objekt nur, indem Sie einen Ausdruck des Formulars va[ba]
schreiben. Die Memberfunktionen der Klasse mask_array
verhalten sich dann wie die entsprechenden Funktionssignaturen, für die definiert valarray<Type>
ist, außer dass nur die Abfolge der ausgewählten Elemente betroffen ist.
Die Sequenz besteht aus den meisten ba.size
Elementen. Ein Element J
ist nur enthalten, wenn ba[J]
es sich um true
. Es gibt so viele Elemente in der Sequenz wie Elemente true
in ba
. Wenn I
es sich um den Index des niedrigsten true-Elements handelt ba
, ist das va[I]
Element Null in der ausgewählten Sequenz.
Beispiel
// mask_array.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<int> va ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
va [ i ] = i;
for ( i = 1 ; i < 10 ; i += 2 )
va [ i ] = -1;
cout << "The initial operand valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
// Use masked subsets to assign a value of 10
// to all elements grrater than 3 in value
va [va > 3 ] = 10;
cout << "The modified operand valarray is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << va [ i ] << " ";
cout << ")." << endl;
}
Output
The initial operand valarray is: (0 -1 2 -1 4 -1 6 -1 8 -1).
The modified operand valarray is: (0 -1 2 -1 10 -1 10 -1 10 -1).
Anforderungen
Header:<valarray>
Namespace:std