最終更新日時: 2025年08月23日 17時41分29秒 (JST)
Shunya が更新

履歴 編集

function
<valarray>

# std::mask_array::operator>>=

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

## 概要

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

## 効果

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

## 戻り値

なし

## 備考

- 引数の型 `ValOrProxy` は、`valarray`、あるいは、その代理となる型である。
  `<valarray>` の概要も参照のこと。
- `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