На этом шаге мы рассмотрим особенности задания множеств по маске.
Следующий способ позволяет определять подмножества элементов по маске - логическому выражению. Например, рассмотрим следующее выражение:
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>&); ... }; }
На следующем шаге мы рассмотрим пример использования маскировааного множества.