最終更新日時:
が更新

履歴 編集

class template
<valarray>

std::mask_array

namespace std {
  template <class T>
  class mask_array;
}

概要

mask_arrayクラスは、非constvalarrayオブジェクトからvalarray<bool>によって抽出した要素を、参照するためのクラスである。抽出条件となるvalarray<bool>は、抽出元のvalarray<T>と同じ長さを持つ配列であり、その各要素は、trueなら対応する要素を抽出し、falseなら対応する要素を抽出しないことを表す。

このクラスのオブジェクトは、valarrayクラスのoperator[]によって返される。

テンプレートパラメータは、以下を意味する:

  • T : valarrayクラスの要素型Tと同じ型

メンバ関数

構築・破棄

名前 説明 対応バージョン
(constructor) コンストラクタ
~mask_array() = default; デストラクタ
operator= 代入演算子

四則演算

名前 説明 対応バージョン
operator+= 加算の複合代入
operator-= 減算の複合代入
operator*= 乗算の複合代入
operator/= 除算の複合代入
operator%= 剰余算の複合代入

ビット演算

名前 説明 対応バージョン
operator&= 論理積の複合代入
operator|= 論理和の複合代入
operator^= 排他的論理和の複合代入
operator<<= 左シフトの複合代入
operator>>= 右シフトの複合代入

メンバ型

名前 説明 対応バージョン
value_type 要素型T

#include <iostream>
#include <valarray>

int main()
{
  std::valarray<int> va =    {1,     2,     3,
                              4,     5,     6};
  std::valarray<bool> mask = {false, true,  false,
                              true,  false, true};

  // trueに対応する要素のみを抽出する
  std::mask_array<int> result = va[mask];

  // 抽出した要素を書き換える
  result *= std::valarray<int>(2, 3);

  for (int x : va) {
    std::cout << x << std::endl;
  }
}

出力

1
4
3
8
5
12