Классы подмножеств элементов. Класс mask_array

   
На этом шаге мы приведем общие сведения об этом классе.

   
Объекты класса 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.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий