Шаг 159.
Библиотека STL. Контейнеры STL. Операции над множествами и мультимножествами. Операции создания, копирования и уничтожения

    На этом шаге мы рассмотрим конструкторы и деструктор множеств и мультимножеств.

    В таблице 1 представлены конструкторы и деструктор множеств и мультимножеств.

Таблица 1. Конструкторы и деструктор множеств и мультимножеств
Операция Описание
set с Создает пустое множество или мультимножество, не содержащее ни одного элемента
set c(op) Создает пустое множество или мультимножество, использующее критерий сортировки ор
set с1(c2) Создает копию другого множества или мультимножества того же типа (с копированием всех элементов)
set c(beg,end) Создает множество или мультимножество, инициализированное элементами интервала [beg,end)
set c(beg,end,op) Создает множество или мультимножество с критерием сортировки ор, инициализированное элементами интервала [beg,end)
c.~set() Уничтожает все элементы и освобождает память

    В таблице символами "set" обозначена одна из следующих конструкций:

    Существуют два варианта определения критерия сортировки.

    Учтите, что критерий сортировки также используется при проверке элементов на равенство. При использовании критерия сортировки по умолчанию проверка двух элементов на равенство реализуется так:

  if (! (elem1<elem2 || elem2<elem1) )

    У такой реализации есть три достоинства:

    С другой стороны, проверка на равенство в этом варианте занимает немного больше времени, поскольку для получения результата приходится выполнять два сравнения. Впрочем, если первое подвыражение дает истинный результат, то второе подвыражение не обрабатывается.

    Полное имя типа для контейнера получается излишне сложным и громоздким, поэтому для него рекомендуется определить псевдоним (то же самое полезно сделать и для определений итераторов):

  typedef std::set<int,std::greater<int> > IntSet;
  .    .    .    .    . 
  intSet coll;
  IntSet::iterator pos;

    Конструктор, которому передается начало и конец интервала, может применяться для инициализации контейнера элементами контейнеров, относящихся к другим типам (от массива до стандартного входного потока данных). За подробностями обращайтесь на 124 шаг.

    На следующем шаге мы рассмотрим немодифицирующие операции над множествами и мультимножествами.




Предыдущий шаг Содержание Следующий шаг