最終更新日時:
が更新

履歴 編集

function
<valarray>

std::mask_array::operator>>=

void operator>>=(const valarray<T>& xs) const;

概要

右シフトの複合代入を行う。

効果

元となるvalarrayオブジェクトから参照によって抽出した各要素を、xsの各要素の値だけ左シフトする。

戻り値

なし

備考

valarrayから抽出した要素数とxsの要素数が異なる場合、その挙動は未定義。

#include <iostream>
#include <valarray>
#include <bitset>

int main()
{
  std::valarray<int> va = {
    0b01010001,
    0b10100000,
    0b01011000
  };

  std::valarray<bool> mask = {true, true, true};

  std::mask_array<int> result = va[mask];

  // 抽出した要素を4ビット右シフトする
  result >>= std::valarray<int>(4, 3);

  for (int x : va) {
    std::cout << std::bitset<8>(x).to_string() << std::endl;
  }
}

出力

00000101
00001010
00000101