Namensräume
Varianten
Aktionen

operator==,!=,<,<=,>,>=(std::valarray)

Von cppreference.com
< cpp‎ | numeric‎ | valarray
 
 
 
 
Definiert in der Header-Datei <valarray>
template< class T >

std::valarray<bool> operator==( const std::valarray<T>& lhs, const std::valarray<T>& rhs );
template< class T >
std::valarray<bool> operator!=( const std::valarray<T>& lhs, const std::valarray<T>& rhs );
template< class T >
std::valarray<bool> operator< ( const std::valarray<T>& lhs, const std::valarray<T>& rhs );
template< class T >
std::valarray<bool> operator<=( const std::valarray<T>& lhs, const std::valarray<T>& rhs );
template< class T >
std::valarray<bool> operator> ( const std::valarray<T>& lhs, const std::valarray<T>& rhs );
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,
                                const std::valarray<T>& rhs );
template< class T >
std::valarray<bool> operator!=( const typename std::valarray<T>::value_type & lhsv,
                                const std::valarray<T>& rhs );
template< class T >
std::valarray<bool> operator< ( const typename std::valarray<T>::value_type & lhsv,
                                const std::valarray<T>& rhs );
template< class T >
std::valarray<bool> operator<=( const typename std::valarray<T>::value_type & lhsv,
                                const std::valarray<T>& rhs );
template< class T >
std::valarray<bool> operator> ( const typename std::valarray<T>::value_type & lhsv,
                                const std::valarray<T>& rhs );
template< class T >
std::valarray<bool> operator>=( const typename std::valarray<T>::value_type & lhsv,

                                const std::valarray<T>& rhs );
(2)
template< class T >

std::valarray<bool> operator==( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
template< class T >
std::valarray<bool> operator!=( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
template< class T >
std::valarray<bool> operator< ( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
template< class T >
std::valarray<bool> operator<=( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
template< class T >
std::valarray<bool> operator> ( const std::valarray<T>& lhs,
                                const typename std::valarray<T>::value_type & rhsv );
template< class T >
std::valarray<bool> operator>=( const std::valarray<T>& lhs,

                                const typename std::valarray<T>::value_type & rhsv );
(3)

Vergleicht jeden Wert im numerischen Array mit einem anderen Wert.

1) Gibt ein numerisches Array von bool zurück, das Elemente enthält, die jeweils durch Anwenden des angegebenen Vergleichsoperators auf die entsprechenden Werte von lhs und rhs erhalten werden.

Das Verhalten ist undefiniert, wenn size() != v.size().

2) Gibt ein numerisches Array von bool zurück, das Elemente enthält, die jeweils durch Anwenden des angegebenen Vergleichsoperators auf lhsv und den entsprechenden Wert von rhs erhalten werden.
3) Gibt ein numerisches Array von bool zurück, das Elemente enthält, die jeweils durch Anwenden des angegebenen Vergleichsoperators auf den entsprechenden Wert von lhs und rhsv erhalten werden.

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 T angewendet werden.
  • Der Ergebniswert kann eindeutig in bool konvertiert werden.

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