# std::mask_array

< cpp‎ | numeric‎ | valarray

定义于头文件 `<valarray>` |  |
template< class T > class mask_array; |  |

`std::mask_array` 是以std::valarray<bool> 为参数的 valarray 下标运算符所用的帮助模板。它拥有引用语义，并提供到由下标对应 std::valarray<bool> 掩码的 `true` 值的元素所组成的 valarray 子集的访问。

### 成员类型

类型 | 定义
`value_type` | `T`

### 成员函数

(构造函数) | 构造一个 `mask_array` (公开成员函数)
(析构函数) | 销毁一个 `mask_array` (公开成员函数)
operator= | 赋值内容 (公开成员函数)
operator+=operator-=operator*=operator/=operator%=operator&=operator|=operator^=operator<<=operator>>= | 在掩码所指代的数组上进行算术运算。 (公开成员函数)

### 参阅

    #include <iostream>
    #include <valarray>

    int main()
    {
        std::valarray<int> data = {0,1,2,3,4,5,6,7,8,9};

        std::cout << "Initial valarray: ";
        for(int n: data) std::cout << n << ' ';
        std::cout << '\n';

        data[data > 5] = -1;
        // data>5 的类型是 std::valarray<bool>
        // data[data>5] 的类型是 std::mask_array<int>

        std::cout << "After v[v>5]=-1:  ";
        for(int n: data) std::cout << n << ' ';
        std::cout << '\n';
    }

输出：

    Initial valarray: 0 1 2 3 4 5 6 7 8 9
    After v[v>5]=-1:  0 1 2 3 4 5 -1 -1 -1 -1