最終更新日時(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 /= 2;
  print("valarray/=int", result2);
}

出力

valarray/=valarray : {4,2,2}
valarray/=int : {2,2,3}