На этом шаге мы приведем общие сведения об этом классе.
Объекты класса mask_array создаются при передаче valarray<bool> в индексе неконстантного массива значений:
namespace std {
template<class T>
class valarray {
public:
. . . .
mask_array<T> operator[](const valarray<bool>&);
. . . .
};
}
Класс mask_array поддерживает следующие операции:
namespace std {
template <class T>
class mask_array {
public:
typedef T value_type;
void operator= (const T&);
void operator= (const valarray<T>&) const;
void operator*= (const valarray<T>&) const;
void operator/= (const valarray<T>&) const;
void operator%= (const valarray<T>&) const;
void operator+= (const valarray<T>&) const;
void operator-= (const valarray<T>&) const;
void operator^= (const valarray<T>&) const;
void operator&= (const valarray<T>&) const;
void operator|= (const valarray<T>&) const;
void operator<<= (const valarray<T>&) const;
void operator>>= (const valarray<T>&) const;
~mask_array();
private:
mask_array();
mask_array(const mask_array<T>&);
mask_array& operator= (const mask_array<T>&);
...
};
}
Класс mask_array также проектировался исключительно как внутренний вспомогательный класс для работы с маскированными подмножествами, который должен оставаться невидимым для внешних пользователей. По этой причине все конструкторы и операторы присваивания класса mask_array<> объявлены закрытыми.
На следующем шаге мы рассмотрим класс indirect_array.