operator==,!=,<,<=,>,>=(std::valarray)
| Definiert in der Header-Datei <valarray> |
||
| template< class T > std::valarray<bool> operator==( const std::valarray<T>& lhs, const std::valarray<T>& rhs ); |
(1) | |
| template< class T > std::valarray<bool> operator==( const typename std::valarray<T>::value_type & lhsv, |
(2) | |
| template< class T > std::valarray<bool> operator==( const std::valarray<T>& lhs, |
(3) | |
Vergleicht jeden Wert im numerischen Array mit einem anderen Wert.
Das Verhalten ist undefiniert, wenn size() != v.size().
Inhalt |
[bearbeiten] Parameter
| lhs, rhs | - | numerische Arrays zum Vergleichen |
| lhsv, rhsv | - | Werte, die mit jedem Element innerhalb eines numerischen Arrays verglichen werden sollen |
[bearbeiten] Rückgabewert
Ein numerisches Array von bool, das die Vergleichsergebnisse der entsprechenden Elemente enthält.
[edit] Exceptions
Kann implementierungsdefinierte Ausnahmen auslösen.
[bearbeiten] Hinweise
Jeder der Operatoren kann nur instanziiert werden, wenn die folgenden Anforderungen erfüllt sind:
- Der angegebene Operator kann auf den Typ
Tangewendet werden. - Der Ergebniswert kann eindeutig in bool konvertiert werden.
- Der angegebene Operator kann auf den Typ
Die Funktion kann mit einem anderen Rückgabetyp als std::valarray implementiert werden. In diesem Fall hat der Ersatztyp die folgenden Eigenschaften
- Alle const-Mitgliedsfunktionen von std::valarray sind vorhanden.
- std::valarray, std::slice_array, std::gslice_array, std::mask_array und std::indirect_array können aus dem Ersatztyp konstruiert werden.
- Für jede Funktion, die ein const std::valarray<T>& als Argument nimmt (außer begin() und end())(seit C++11), werden identische Funktionen hinzugefügt, die die Ersatztypen nehmen;
- Für jede Funktion, die zwei Argumente vom Typ const std::valarray<T>& annimmt, werden identische Funktionen hinzugefügt, die jede Kombination aus const std::valarray<T>& und Ersatztypen annehmen.
- Der Rückgabetyp fügt nicht mehr als zwei Ebenen von Template-Verschachtelung über den am tiefsten verschachtelten Argumenttyp hinaus hinzu.
[bearbeiten] Beispiel
#include <iostream> #include <valarray> int main() { // zero all negatives in a valarray std::valarray<int> v = {1, -1, 0, -3, 10, -1, -2}; std::cout << "Before: "; for (auto n : v) std::cout << n << ' '; std::cout << '\n'; v[v < 0] = 0; std::cout << "After: "; for (auto n : v) std::cout << n << ' '; std::cout << '\n'; // convert the valarray<bool> result of == to a single bool std::valarray<int> a = {1, 2, 3}; std::valarray<int> b = {2, 4, 6}; std::cout << "2*a == b is " << std::boolalpha << (2 * a == b).min() << '\n'; }
Ausgabe
Before: 1 -1 0 -3 10 -1 -2 After: 1 0 0 0 10 0 0 2*a == b is true
[bearbeiten] Fehlerberichte
Die folgenden Verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 3074 | C++98 | T wird sowohl aus dem Skalar als auch aus dem valarray für (2,3) abgeleitet,was Aufrufe mit gemischten Typen verhindert. |
nur T aus dem valarray ableiten |