std::valarray<T>::operator+,-,~,!
Aus de.cppreference.net
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.
Parameter
(keine)
Rückgabewert
Ein numerisches Array, das Elemente mit Werten enthält, die durch Anwendung des entsprechenden Operators auf die Werte in * this erhalten wurden.
Ausnahmen
Kann implementierungsdefinierte Ausnahmen auslösen.
Anmerkungen
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) oderbool(4) konvertiert werden.
- Der angegebene Operator kann auf den Typ
Die Funktion kann mit einem von std::valarray verschiedenen Rückgabetyp implementiert werden. In diesem Fall hat der Ersatztyp die folgenden Eigenschaften:
- Alle
constMitgliedsfunktionen von std::valarray werden bereitgestellt. - 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 einen
const std::valarray<T>&nimmt, mit Ausnahme von begin() und end()(seit C++11), werden identische Funktionen hinzugefügt, die die Ersatztypen nehmen; - Für jede Funktion, die zwei
const std::valarray<T>&Argumente nimmt, werden identische Funktionen hinzugefügt, die jede Kombination ausconst std::valarray<T>&und Ersatztypen nehmen. - Der Rückgabetyp fügt nicht mehr als zwei Ebenen der Template-Verschachtelung über dem am tiefsten verschachtelten Argumenttyp hinzu.
Beispiel
Diesen Code ausführen
#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
Siehe auch
|
wendet zusammengesetzte Zuweisungsoperatoren auf jedes Element des valarray an
(öffentliche Elementfunktion) |
|
|
wendet binäre Operatoren auf jedes Element von zwei valarrays oder einem valarray und einem Wert an
(Funktions-Template) |