Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Классы map и multimap

Читайте также:
  1. АВТОМОБИЛИ УЧАСТНИКОВ. ЗАЧЕТНЫЕ КЛАССЫ
  2. АВТОМОБИЛИ УЧАСТНИКОВ. КЛАССЫ. ОБЯЗАТЕЛЬНЫЕ НАДПИСИ.
  3. Виды туризма и классы обслуживания
  4. Викторина по книге Е. Ильиной «Четвёртая высота». 5 – 6 классы.
  5. Все начинается с CObject. Важнейшие классы библиотеки. Создание приложения MFC Windows. Выбор количества окон, которые будут поддерживаться приложением.
  6. Выставочные классы и сертификаты
  7. Глагольные классы

Классы map и multimap реализуют классические ассоциативные массивы, отображающие множество ключей на множество значений (типы ключа и значения задаются как два независимых параметра шаблона). Таким образом, в отличие от обычных последовательных контейнеров, в качестве ключа в ассоциативных массивах выступает не число (индекс), а любой объект. Иногда ассоциативные массивы ещё называют словарями.

В качестве ключей в классах map и multimap можно использовать любые сравнимые объекты. Значения, доступные по ключам, сравнимыми быть не обязаны. К парам ключ-значение в классах map и multimap может быть получен доступ в порядке «возрастания» ключей. Операции вставки, удаления и поиска по ключу осуществляются за логарифмическое время.

Если класс map позволяет ассоциировать с каждым ключом лишь одно значение, в случае multimap по каждому ключу может быть доступно сразу несколько элементов.

Классы unordered_map C++11 и unordered_multimap C++11

Классы unordered_map и unordered_multimap — это неупорядоченные контейнеры, реализующие семантику ассоциативных массивов аналогично классам map и multimap. Операции вставки, удаления и поиска по ключу занимают в среднем константное время.

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

template < class C >

typename C:: const_iterator find_last

(const C & c, typename C:: value_type v)

{

typename C:: const_iterator p = c.end ();

while (p!= c.begin ())

if (* -- p == v)

return p;

return c.end ();

}

Универсальные алгоритмы STL (их всего 60) - реализуют некоторые распространенные операции с контейнерами, которые не представлены функциями-членами каждого из контейнеров (например, просмотр, сортировка, поиск, удаление элементов…). Каждый алгоритм выражается шаблоном функции или набором шаблонов функций. Операции, реализуемые алгоритмами, являются универсальными для любого из контейнеров и поэтому определены вне этих контейнеров. Реализация алгоритмов не использует имен никаких конкретных контейнеров, а все действия над контейнером производятся через универсальные имена итераторов. Зная, как устроены алгоритмы, можно писать свои собственные алгоритмы обработки, которые не будут зависеть от контейнера. Все стандартные алгоритмы находятся в пространстве имен std, а их объявления - в заголовочном файле < algorithm >.

1. Немодифицирующие алгоритмы - извлекают информацию из контейнера, но не модифицируют сам контейнер (ни элементы, ни порядок их расположения).

Примеры:

Find () – находит первое вхождение элемента с заданным значением

Count () – количество вхождений элемента с заданным значением

For_each () – применяется некоторая операция к каждому элементу

(не связано с изменением)

2. Модифицирующие алгоритмы - изменяют содержимое контейнера. Либо сами элементы меняются, либо их порядок, либо их количество.

Примеры:

Transform () – применяется некоторая операция к каждому элементу (каждый элемент изменяется)

Reverse () – переставляет элементы в последовательности

Copy () – создает новый контейнер


Дата добавления: 2015-09-03; просмотров: 173 | Нарушение авторских прав


Читайте в этой же книге: Стандартный класс string. Зарезервированные слова и опции меню. | Стандартный класс string. Операции ввода-вывода строк. | Описание таблицы акселераторов | Специализация шаблонов класса | Схемы отображения шрифтов | Заметки | Недостатки шаблонов | Стандартная библиотека шаблонов (STL). Назначение и состав библиотеки. Контейнеры. Последовательные контейнеры. Векторы. | Структура библиотеки | Последовательные контейнеры поддерживают указанный пользователем порядок вставляемых элементов. |
<== предыдущая страница | следующая страница ==>
Абстракция| Сортировка.

mybiblioteka.su - 2015-2024 год. (0.006 сек.)