Namespaces
Variants

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

From cppreference.net
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 로 명확하게 변환할 수 있습니다.

예제

#include <iostream>
#include <string_view>
#include <type_traits>
#include <valarray>
void o(std::string_view rem, auto const& v, bool nl = false)
{
    if constexpr (std::is_scalar_v<std::decay_t<decltype(v)>>)
        std::cout << rem << " : " << v;
    else
    {
        for (std::cout << rem << " : { "; auto const e : v)
            std::cout << e << ' ';
        std::cout << '}';
    }
    std::cout << (nl ? "\n" : ";  ");
}
int main()
{
    std::valarray<int> x, y;
    o("x", x = {1, 2, 3, 4}), o("y", y = {4, 3, 2, 1}), o("x += y", x += y, 1);
    o("x", x = {4, 3, 2, 1}), o("y", y = {3, 2, 1, 0}), o("x -= y", x -= y, 1);
    o("x", x = {1, 2, 3, 4}), o("y", y = {5, 4, 3, 2}), o("x *= y", x *= y, 1);
    o("x", x = {1, 3, 4, 7}), o("y", y = {1, 1, 3, 5}), o("x &= y", x &= y, 1);
    o("x", x = {0, 1, 2, 4}), o("y", y = {4, 3, 2, 1}), o("x <<=y", x <<=y, 1);
    std::cout << '\n';
    o("x", x = {1, 2, 3, 4}), o("x += 5", x += 5, 1);
    o("x", x = {1, 2, 3, 4}), o("x *= 2", x *= 2, 1);
    o("x", x = {8, 6, 4, 2}), o("x /= 2", x /= 2, 1);
    o("x", x = {8, 4, 2, 1}), o("x >>=1", x >>=1, 1);
}

출력:

x : { 1 2 3 4 };  y : { 4 3 2 1 };  x += y : { 5 5 5 5 }
x : { 4 3 2 1 };  y : { 3 2 1 0 };  x -= y : { 1 1 1 1 }
x : { 1 2 3 4 };  y : { 5 4 3 2 };  x *= y : { 5 8 9 8 }
x : { 1 3 4 7 };  y : { 1 1 3 5 };  x &= y : { 1 1 0 5 }
x : { 0 1 2 4 };  y : { 4 3 2 1 };  x <<=y : { 0 8 8 8 }
x : { 1 2 3 4 };  x += 5 : { 6 7 8 9 }
x : { 1 2 3 4 };  x *= 2 : { 2 4 6 8 }
x : { 8 6 4 2 };  x /= 2 : { 4 3 2 1 }
x : { 8 4 2 1 };  x >>=1 : { 4 2 1 0 }

참고 항목

valarray의 각 요소에 단항 산술 연산자를 적용합니다
(public member function)
두 valarray의 각 요소에, 또는 valarray와 값에 이항 연산자를 적용합니다
(function template)