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

履歴 編集

function template
<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 *= 2;
  print("valarray*=int", result2);
}

出力

valarray*=valarray : {4,10,18}
valarray*=int : {8,10,12}