std::valarray<T>::operator+,-,~,!
Von cppreference.com
| valarray<T> operator+() const; |
(1) | |
| valarray<T> operator-() const; |
(2) | |
| valarray<T> operator~() const; |
(3) | |
| valarray<bool> operator!() const; |
(4) | |
Wendet unäre Operatoren auf jedes Element im numerischen Array an.
Inhalt |
[bearbeiten] Parameter
(keine)
[bearbeiten] Rückgabewert
Ein numerisches Array, das Elemente mit Werten enthält, die durch Anwendung des entsprechenden Operators auf die Werte in *this erhalten werden.
[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
T(1-3) oder bool (4) 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
Führen Sie diesen Code aus
#include <iostream> #include <string_view> #include <valarray> template<typename T> void print(std::string_view const note, std::valarray<T> const vala, // by-value, see Notes above std::string_view const term = "\n") { std::cout << note << std::boolalpha << std::showpos; for (T const element : vala) std::cout << '\t' << element; std::cout << term; } int main() { std::valarray<int> x{1, 2, 3, 4}; print<int>("x: ", x); print<int>("+x: ", +x); print<int>("+ + x: ", + + x); print<int>("-x: ", -x); print<int>("- - x: ", - - x, "\n\n"); std::valarray<short> y{0, 1, -1, 0x7fff}; print<short>("y: ", y); print<short>("~y: ", ~y); print<short>("~~y: ", ~~y, "\n\n"); std::valarray<bool> z{true, false}; print<bool>("z: ", z); print<bool>("!z: ", !z); print<bool>("!!z: ", !!z); }
Mögliche Ausgabe
x: +1 +2 +3 +4 +x: +1 +2 +3 +4 + + x: +1 +2 +3 +4 -x: -1 -2 -3 -4 - - x: +1 +2 +3 +4 y: +0 +1 -1 +32767 ~y: -1 -2 +0 -32768 ~~y: +0 +1 -1 +32767 z: true false !z: false true !!z: true false
[bearbeiten] Siehe auch
| wendet einen zusammengesetzten Zuweisungsoperator auf jedes Element des Valarrays an (public member function) | |
| wendet binäre Operatoren auf jedes Element zweier Valarrays oder eines Valarrays und eines Werts an (function template) |