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

履歴 編集

function
<valarray>

std::slice_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 = {
    0b10000101,
    0b00001010,
    0b00010101
  };

  const std::size_t start = 0u;  // 開始位置
  const std::size_t length = 3u; // 要素数
  const std::size_t stride = 1u; // 何個置きに処理するか

  std::slice_array<int> result = va[std::slice(start, length, stride)];

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

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

出力

01010000
10100000
01010000