На этом шаге мы рассмотрим особенности задания множеств по маске.
Следующий способ позволяет определять подмножества элементов по маске - логическому выражению. Например, рассмотрим следующее выражение:
va[va > 7]
В этом выражении показанное ниже подвыражение возвращает массив размера va, в котором для каждого элемента логический признак указывает, превышает ли этот элемент 7:
va > 7
Оператор индексирования при помощи этого логического массива определяет все элементы, для которых логическое выражение возвращает true. Таким образом, следующая конструкция определяет подмножество элементов массива va, больших 7.
va[va > 7]
В остальном маскированные массивы ничем не отличаются от других подмножеств.
namespace std {
template <class T>
class mask_array;
template <class T>
class valarray {
public:
// Маскирование константного массива значений
// возвращает новый массив значений
valarray<T> operator[] (const gslice&) const;
// Маскирование неконстантного массива
// значений возвращает mask_array
mask_array<T> operator[] (const valarray<bool>&);
...
};
}
На следующем шаге мы рассмотрим пример использования маскировааного множества.