• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

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

    履歴 編集

    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 = {
        0b00000101,
        0b00001010,
        0b00010101
      };
    
      std::valarray<bool> mask = {true, true, true};
    
      std::mask_array<int> result = va[mask];
    
      // 抽出した要素に0b11を排他的論理和する
      result ^= std::valarray<int>(0b00000011, 3);
    
      for (int x : va) {
        std::cout << std::bitset<8>(x).to_string() << std::endl;
      }
    }
    

    出力

    00000110
    00001001
    00010110