std::valarray::operator+=,-=,*=,/=,%=,&=,|=,<<=,>>=

来自cppreference.com
< cpp‎ | numeric‎ | valarray
valarray<T> operator+=( const valarray<T>& v );

valarray<T> operator-=( const valarray<T>& v );
valarray<T> operator*=( const valarray<T>& v );
valarray<T> operator/=( const valarray<T>& v );
valarray<T> operator%=( const valarray<T>& v );
valarray<T> operator&=( const valarray<T>& v );
valarray<T> operator|=( const valarray<T>& v );
valarray<T> operator^=( const valarray<T>& v );
valarray<T> operator<<=( const valarray<T>& v );

valarray<T> operator>>=( const valarray<T>& v );
(1)
valarray<T> operator+=( const T& val );

valarray<T> operator-=( const T& val );
valarray<T> operator*=( const T& val );
valarray<T> operator/=( const T& val );
valarray<T> operator%=( const T& val );
valarray<T> operator&=( const T& val );
valarray<T> operator|=( const T& val );
valarray<T> operator^=( const T& val );
valarray<T> operator<<=( const T& val );

valarray<T> operator>>=( const T& val );
(2)

应用复合赋值运算符到数值数组中的每个元素。

1) 将以应用对应运算符到每个元素先前值和来自 v 的对应元素所获得的值赋值给每个元素。

size() != v.size() 则行为未定义

若任何 v 中的值在赋值过程中计算并依赖任何 *this 中的值,即赋值右侧的表达式引用到赋值左侧的变量,则行为未定义。

2) 将以应用对应运算符到每个元素先前值和 val 的值所获得的值赋值给每个元素。

目录

[编辑] 参数

v - 另一个数值数组
val - 一个值

[编辑] 返回值

*this

[编辑] 异常

(无)

[编辑] 注意

仅若下列条件得到满足,才能实例化各个运算符:

  • 所指示的运算符可应用于类型 T
  • 返回值可以无歧义地转换成 T (1-3) 或 bool (4) 。

该函数能以异于 std::valarray 的返回类型实现。此情况下,替换类型拥有下列属性:

  • 提供 std::valarray 的所有 const 成员函数。
  • std::valarraystd::slice_arraystd::gslice_arraystd::mask_arraystd::indirect_array 能从替换类型构造。
  • 所有接受类型 const std::valarray& 参数的函数,除了 begin()end() (C++14 起)也应该接受替换类型。
  • 所有接收二个 const std::valarray& 类型参数的函数应该接受任何 const std::valarray& 与替换类型的组合。
  • 返回类型不添加多于超过最深的嵌套参数类型二层的嵌套模板。