std::valarray<T>:: operator+,-,~,!
|
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.
Inhaltsverzeichnis |
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.
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 Rückgabetyp implementiert werden, der sich von std::valarray unterscheidet. In diesem Fall weist der Ersatztyp die folgenden Eigenschaften auf:
-
- Alle const Memberfunktionen 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 ein const std:: valarray < T > & außer begin() und end() (seit C++11) akzeptiert, müssen identische Funktionen hinzugefügt werden, die die Ersatztypen akzeptieren;
- Für jede Funktion, die zwei const std:: valarray < T > & Argumente akzeptiert, müssen identische Funktionen hinzugefügt werden, die jede Kombination von const std:: valarray < T > & und Ersatztypen akzeptieren.
- Der Rückgabetyp fügt nicht mehr als zwei Ebenen von Template-Verschachtelung über dem am tiefsten verschachtelten Argumenttyp hinzu.
Beispiel
#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) |