Ассоциативные контейнеры
Ассоциативные контейнеры предназначены для обеспечения прямого
доступа посредством использования ключей. В STL имеется четыре ассоциативных контейнерных класса: multiset, set, multimap и map. Во всех контейнерах ключи отсортированы. Классы multiset и set манипулируют множествами значений, одновременно являющихся ключами. При этом multiset допускает одинаковые ключи, а set нет. Классы multimap и map манипулируют множествами значений, ассоциируемых с ключами. При этом multimap допускает хранение одинаковых ключей с ассоциированными значениями, а map нет.
Ассоциативный контейнер multiset обеспечивает быстрое сохранение и
выборку ключей. Упорядочение элементов контейнера определяется компараторным объектом-функцией less<тип>, при этом отсортированные ключи должны поддерживать сравнение с помощью operator<, иначе (для пользовательских типов) необходимо перегружать операцию сравнения.
Класс multiset поддерживает двунаправленные итераторы (но не итерато-
ры произвольного доступа).
Контейнерный класс set используется для обеспечения быстрого сохранения и доступа к уникальным ключам. При попытке поместить в контейнер set
дубликата ключа это действие игнорируется без идентификации ошибки. Контейнер set поддерживает двунаправленные итераторы. Работа с контейнером set может быть продемонстрирована на предыдущем примере, если в нем строку
typedef std::multiset<int,std::less<int> > intMSET;
|
|
заменить на строку
typedef set<int,std::less<int> > intMSET;
что приведет далее к созданию и работе с объектами класса set.
Ассоциативный контейнер multimap эффективен для быстрого сохранения и нахождения ключей и ассоциированных с ними значений. Многие методы, используемые в контейнерах set и multiset, применимы к контейнерам map и
multimap. Элементами multimap и map являются объекты pair – пары ключей и соответствующих им значений. Порядок сортировки ключей в контейнере определяется компараторным объектом-функцией less<тип>. В контейнере multimap допускается дублирование ключей. Это означает, что несколько значений могут быть ассоциированы с одним ключом (отношение «один ко многим»).
Дата добавления: 2015-12-21; просмотров: 22; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!