|
|||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Ассоциативные контейнерыКласс mар создает ассоциативный контейнер, в котором каждому ключу соответствует единственное значение. По существу, ключ представляет собой имя, с помощью которого можно получить требуемое значение. Если в контейнере хранится некое значение, доступ к нему возможен только через ключ. Таким образом, ассоциативный контейнер фактически хранит пары ключ-значение. Преимущество ассоциативных массивов заключается в доступе к значениям по их ключам. Например, можно создать ассоциативный контейнер, в котором ключом является имя человека, а значением - номер его телефона. В настоящее время ассоциативные контейнеры получают все более широкое применение. Как указывалось ранее, ассоциативные контейнеры могут содержать лишь уникальные ключи. Дубликаты не допускаются. Если необходимо создать ассоциативный контейнер, в котором можно хранить дубликаты, следует применять класс multiset Шаблонная спецификация класса mар имеет следующий вид.
template <class Key, class T, class Ccmp = less<Key>, class Allocator = allocator<pair<const key,T> > class map Здесь класс Key определяет тип ключа, шаблонный параметр Т задает тип данных, хранящихся в ассоциативном массиве, а функция Camp позволяет сравнивать два ключа. По умолчанию в качестве функции Camp применяется стандартный функтор less(). Распределитель памяти задается классом Allocator, причем по умолчанию используется стандартный класс allocator. Класс mар имеет следующие конструкторы.
explicit map (const Соmр &cmpfn=Comp(),//explicit-необяз const Allocator &a= Allocator()); map (const map< Key, T, Сomp, Allocator> k&ob); template <class InIter>list (InIter start, InIter end, const Сomp &cmpfn = Comp(), const Allocator &a = Allocator());
Первая версия конструктора создает пустой ассоциативный массив. Вторая — ассоциативный контейнер, содержащий элементы объекта ob. Третий вариант конструктора создает ассоциативный массив, состоящий из элементов, лежащих в диапазоне, заданном итераторами start и end. Функция cmpfn определяет порядок следования элементов массива. Как правило, любой объект, использующийся в качестве ключа, должен определять конструктор по умолчанию, а также оператор "<" и другие операторы сравнения. Специфические требования, предъявляемые к ключам, зависят от компилятора. Пример создания ассоциативного массива
map<char, int> m;
В классе mар определены следующие операторы сравнения:
==, <, <=,!=, >, >= Некоторые функции-члены, определенные в классе mар, перечислены в табл. 4. В этой таблице класс key_type представляет собой тип ключа, а класс value_type определяет тип раir<Кeу,T>.
Таблица 4. Функции, определенные в классе mар
Пары ключ-значение хранятся в ассоциативном массиве как объекты типа pair. Его шаблонная спецификация имеет следующий вид.
template <сlass Ktype, class Vtype> struct pair { Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |