На этом шаге мы приведем общие сведения об отображениях и мультиотображениях.
Элементами отображений и мультиотображений являются пары "ключ/значение". Сортировка элементов производится автоматически на основании критерия сортировки, применяемого к ключу. Отображения и мультиотображения отличаются только тем, что последние могут содержать дубликаты, а первые - нет (рисунок 1).
Рис.1. Отображение и мультиотображение
Чтобы использовать отображение или мультиотображение в программе, необходимо включить в нее заголовочный файл <map>:
#include <map>
Типы отображения и мультиотображения определяются как шаблоны классов в пространстве имен std:
namespace std { template <class Key, class T. class Compare = less<Key>, class Allocator = allocator<pair<const Key, T> > > class map; template <class Key, class T, class Compare = less<Key>, class Allocator = allocator<pair<const Key, T> > > class multimap; }
Первый аргумент шаблона определяет тип ключа, а второй - тип значения элемента. Элементы отображений и мультиотображений могут состоять из произвольных типов Key и Т, удовлетворяющих двум условиям:
Необязательный третий аргумент шаблона задает критерий сортировки. Как и в случае с множествами, критерий сортировки должен определять "строгую квазиупорядоченность" (смотри 157 шаг). Элементы сортируются по ключам, значения элементов не влияют на порядок следования. Критерий сортировки также используется для проверки на равенство (два элемента равны, если ни один из них не меньше другого). Если специальный критерий сортировки не указан, по умолчанию используется критерий less. Объект функции less сортирует элементы, сравнивая их оператором <.
Необязательный четвертый параметр шаблона определяет модель памяти. По умолчанию используется модель allocator, определенная в стандартной библиотеке C++.
На следующем шаге мы рассмотрим возможности отображений и мультиотображений.