最終更新日時(UTC):
が更新

履歴 編集

function
<valarray>

std::valarray::operator-=

valarray<T>& operator-=(const ValOrProxy<T>& xs); // (1)
valarray<T>& operator-=(const T& x);              // (2)

概要

減算の複合演算を行う。

  • (1) : *thisの各要素から、xsの各要素を減算する。
  • (2) : *thisの各要素から、xを減算する。

効果

  • (1) : 以下のコードと等価のことを行う:

for (std::size_t i = 0; i < size(); ++i) {
  (*this)[i] -= xs[i];
}

  • (2) : 以下のコードと等価のことを行う:

for (std::size_t i = 0; i < size(); ++i) {
  (*this)[i] -= x;
}

戻り値

*this

備考

  • 引数の型 ValOrProxy は、valarray、あるいは、その代理となる型である。
    <valarray> の概要も参照のこと。
  • (1) : *thisxs の要素数が異なる場合、その挙動は未定義

#include <iostream>
#include <valarray>

template <class T>
void print(const char* name, const std::valarray<T>& va)
{
  std::cout << name << " : {";
  bool first = true;

  for (const T& x : va) {
    if (first) {
      first = false;
    }
    else {
      std::cout << ',';
    }
    std::cout << x;
  }
  std::cout << "}" << std::endl;
}

int main()
{
  const std::valarray<int> a = {4, 5, 6};
  const std::valarray<int> b = {1, 2, 3};

  std::valarray<int> result1 = a;
  result1 -= b;
  print("valarray-=valarray", result1);

  std::valarray<int> result2 = a;
  result2 -= 1;
  print("valarray-=int", result2);
}

出力

valarray-=valarray : {3,3,3}
valarray-=int : {3,4,5}