std::valarray<T>::operator+,-,~,!
From cppreference.com
| valarray<T> operator+() const; |
(1) | |
| valarray<T> operator-() const; |
(2) | |
| valarray<T> operator~() const; |
(3) | |
| valarray<bool> operator!() const; |
(4) | |
数値配列の各要素に単項演算子を適用します。
目次 |
[編集] パラメータ
(なし)
[編集] 戻り値
*this の値にそれぞれの演算子を適用して得られた値を持つ要素を含む数値配列。
[編集] 例外
実装定義の例外をスローする場合があります。
[編集] 注意
各演算子は、次の要件が満たされている場合にのみインスタンス化できます。
- 指定された演算子を型
Tに適用できます。 - 結果の値は、
T(1-3) または bool (4) に一意に変換できます。
- 指定された演算子を型
この関数は、std::valarray とは異なる戻り値型で実装される場合があります。その場合、代替型は以下のプロパティを持ちます。
- std::valarray のすべての const メンバ関数が提供されます。
- std::valarray、std::slice_array、std::gslice_array、std::mask_array、および std::indirect_array は、代替型から構築できます。
- 2つの const std::valarray<T>& 引数を受け取るすべての関数について、代替型を受け取る同一の関数が追加されます(begin() および end() を除く)。
- 2つの const std::valarray<T>& 引数を受け取るすべての関数について、const std::valarray<T>& と代替型のすべての組み合わせを受け取る同一の関数が追加されます。
- 戻り値型は、最も深くネストされた引数型に対して、2レベル以上のテンプレートネストを追加しません。
[編集] 例
このコードを実行
#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); }
実行結果の例
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
[編集] 関連項目
| valarrayの各要素に複合代入演算子を適用する (public member function) | |
| 2つのvalarray、またはvalarrayと値の各要素に二項演算子を適用する (function template) |