На этом шаге мы перечислим операторы, которые могут применяться к массивам значений.
Унарные операторы массивов значений имеют следующий формат:
valarray valarray::унарный_оператор () const
Унарный оператор возвращает новый массив значений со всеми элементами *this, модифицированными оператором.
Параметр унарный оператор - один из следующих операторов:
operator + operator - operator ~ operator !
Оператор ! возвращает тип valarray<bool>.
Бинарные операторы для массивов значений (кроме операторов сравнения и присваивания) имеют следующий формат:
valarray бинарный_оператор (const valarray&. va1, const valarray& va2) valarray бинарный_оператор (const valarray& va, const T& value) valarray бинарный_оператор (const T& value, const valarray& va)
Операторы возвращают новый массив значений, размер которого соответствует размеру va, va1 или va2. Новый массив значений
содержит результат применения бинарного оператора к каждой паре значений.
Если при вызове оператора передается только отдельное значение value, оно комбинируется с каждым элементом va.
Параметр бинарный_оператор - один из следующих операторов:
operator + operator - operator * operator / operator % operator ^ operator & operator | operator << operator >>
Если va1 и va2 содержат разное количество элементов, результат не определен.
Логические операторы и операторы сравнения работают по той же схеме, но они возвращают массив значений с логическими элементами:
valarray<bool> логический_оператор (const valarray& va1, const valarray& va2) valarray<bool> логический_оператор (const valarray& va1, const T& value) valarray<bool> логический_оператор (const T& value, const va1array& va)
Операторы возвращают новый массив значений, размер которого соответствует размеру va, va1 или va2. Новый массив значений
содержит результат применения логического оператора к каждой паре значений.
Если при вызове оператора передается только отдельное значение value, оно комбинируется с каждым элементом va.
Параметр логический_оператор - один из следующих операторов:
operator == operator != operator < operator <= operator > operator >= operator && operator ||
Если va1 и va2 содержат разное количество элементов, результат операции не определен.
Ссылки и указатели на модифицированные элементы остаются действительными все время, пока существует массив значений и для него не
вызываются функции, изменяющие размер массива.
На следующем шаге мы рассмотрим трансцендентные функции.