std::valarray<T>::operator+,-,~,!
От ru.cppreference.net
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. В этом случае заменяющий тип обладает следующими свойствами:
- Все
constфункции-члены std::valarray предоставляются. - std::valarray, std::slice_array, std::gslice_array, std::mask_array и std::indirect_array могут быть сконструированы из заменяющего типа.
- Для каждой функции, принимающей
const std::valarray<T>&за исключением begin() и end()(начиная с C++11), должны быть добавлены идентичные функции, принимающие заменяющие типы; - Для каждой функции, принимающей два
const std::valarray<T>&аргумента, должны быть добавлены идентичные функции, принимающие любые комбинацииconst std::valarray<T>&и заменяющих типов. - Тип возврата не добавляет более двух уровней вложенности шаблонов поверх наиболее глубоко вложенного типа аргумента.
Пример
Запустить этот код
#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) |
|
|
применяет бинарные операторы к каждому элементу двух valarrays, или valarray и значения
(function template) |