Поделиться через


Класс map

Используется для хранения и извлечения данных из коллекции, в которой каждый элемент является парой, обладающей одновременно значением данных и ключом сортировки. Значение ключа уникально и применяется для автоматической сортировки данных.

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

template <
   class Key, 
   class Type, 
   class Traits = less<Key>, 
   class Allocator=allocator<pair <const Key, Type> > 
> class map;

Параметры

  • Key
    Тип данных ключа для сохранения в сопоставлении.

  • Type
    Тип данных элемента для сохранения в сопоставлении.

  • Traits
    Тип, предоставляющий объект функции, который может сравнить два значения элемента как ключи сортировки, чтобы определить их относительный порядок в сопоставлении. Этот аргумент является необязательным, и в качестве значения по умолчанию используется бинарный предикат less<Key>.

  • Allocator
    Тип, представляющий сохраненный объект распределителя, который инкапсулирует сведения о выделении и освобождении памяти для сопоставления. Этот аргумент является необязательным, и в качестве значения по умолчанию используется allocator<pair <constKey*,* Type> >.

Заметки

Класс сопоставления "Библиотека стандартных шаблонов" (STL):

  • Контейнер переменного размера, фактически извлекающий значения элементов на основе связанных значений ключей.

  • Реверсивный, поскольку он предоставляет двунаправленные итераторы для получения доступа к его элементам.

  • Сортируется, поскольку его элементы упорядочены по значениям ключей в соответствии с заданной функцией сравнения.

  • Является уникальным, поскольку каждый его элемент должен обладать уникальным ключом.

  • Является контейнером ассоциативной пары, поскольку его значения данных элементов отличаются от его значений ключей.

  • Класс шаблона, поскольку функции, которые он предоставляет, являются универсальными и не зависят от типа элемента или ключа. Типы данных, используемые для элементов и ключей, определяются как параметры в шаблоне класса вместе с функцией и распределителем сравнения.

Итератор, предоставляемый классом сопоставления, является двусторонним итератором, но функции-члены класса insert и map обладают версиями, принимающими в качестве параметров шаблона более слабый итератор ввода, чьи функциональные требования ниже, чем гарантированные классом двунаправленных итераторов. Различные концепции итераторов связаны уточнениями функциональности. Каждая концепция итератора обладает собственным набором требований, и совместимые с ней алгоритмы должны быть ограничены этими требованиями. Итератор ввода может быть разыменован для обращения к определенному объекту и инкрементирован следующему итератору в последовательности.

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

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

Сопоставление упорядочивает контролируемые им элементы путем вызова сохраненного объекта функции, относящегося к типу key_compare. Этот сохраненный объект является функцией сравнения, для доступа к которой необходимо обратиться к методу key_comp. Как правило, любые два заданных элемента сравниваются, чтобы определить, что один из них меньше другого или они равны. После сравнения всех элементов создается упорядоченная последовательность неэквивалентных элементов.

Примечание

Функция сравнения — это бинарный предикат, который вызывает строгое слабое упорядочение в стандартном математически смысле.Бинарный предикат f(x,y) является объектом функции, обладающим двумя объектами аргументов x и y, а также возвращаемым значением true или false.Порядок, заданный для набора, является строгим слабым порядком, если бинарный предикат является нерефлексивным, антисимметричным и переходящим и если эквивалентность является переходящей, где два объекта x и y заданы как эквивалентные при том, что оба параметра f(x,y)и f(y,x) имеют значение false.Если более строгое условие равенства между ключами заменяет условие эквивалентности, порядок становится общим (т. е. все элементы упорядочиваются в соответствии друг с другом) и сопоставленные ключи будут неотличимы друг от друга.

Члены

Конструкторы

map

Создание списка определенного размера или с элементами, обладающими указанным значением или указанным allocator, либо в качестве копии другого сопоставления.

Определения типов

allocator_type

Typedef для класса allocator для объекта сопоставления.

const_iterator

Typedef для двунаправленного итератора, который может считывать элемент const в сопоставлении.

const_pointer

Typedef для указателя на элемент const в сопоставлении.

const_reference

Typedef для ссылки на элемент const, хранящийся в сопоставлении для чтения и выполнения операций const.

const_reverse_iterator

Тип, предоставляющий двунаправленный итератор, который может считывать любой элемент const в сопоставлении.

difference_type

Цельночисленный Typedef со знаком для числа элементов в сопоставлении, в диапазоне между элементами, на которые указывают итераторы.

iterator

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

key_compare

Typedef для объекта функции, который может сравнить два ключа сортировки для определения относительного порядка двух элементов в сопоставлении.

key_type

Typedef для ключа сортировки, хранящегося в каждом элементе сопоставления.

mapped_type

Typedef для данных, хранящихся в каждом элементе сопоставления.

указатель

Typedef для указателя на элемент const в сопоставлении.

reference

Typedef для ссылки на элемент, сохраненный в сопоставлении.

reverse_iterator

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

size_type

Целочисленный Typedef без знака для числа элементов в сопоставлении

value_type

Typedef для типа объекта, хранящейся в виде элемента в сопоставлении.

Функции-члены

at

Поиск элемента с заданным значением ключа.

begin

Возврат итератора, указывающего на первый элемент в сопоставлении.

cbegin

Возвращает итератор const, указывающего на первый элемент в сопоставлении.

cend

Возврат итератора const после конца.

clear

Стирает все элементы в сопоставлении.

count

Возврат числа элементов в сопоставлении, ключ которого соответствует ключу, заданному в параметре.

crbegin

Возврат итератора const, указывающего на первый элемент в обратном сопоставлении.

crend

Возврат итератора const, указывающего на местоположение после завершающего элемента в обратном сопоставлении.

emplace

Вставка в сопоставление элемента, созданного в качестве замены.

emplace_hint

Вставка в сопоставление элемента, созданного в качестве замены, с подсказкой о размещении.

empty

Возврат true, если сопоставление является пустым.

end

Возврат итератора после конца.

equal_range

Возвращает пару итераторов. Первый итератор в паре указывает на первый элемент в map с ключом, который больше указанного ключа. Второй итератор в паре указывает на первый элемент в map с ключом, который больше или равен данному ключу.

erase

Удаление элемента или диапазона элементов в сопоставлении с заданных позиций.

find

Возврат итератора, указывающего на расположение элемента в сопоставлении с ключом, равным указанному ключу.

get_allocator

Возврат копии объекта allocator, который используется для формирования сопоставления.

insert

Вставка элемента или диапазона элементов в сопоставление в заданной позиции.

key_comp

Возврат копии объекта сравнения, который используется для упорядочивания ключей в сопоставлении.

lower_bound

Возврат итератора, указывающего на первый элемент в сопоставлении с ключом, который больше или равен указанному ключу.

max_size

Возврат максимальной длины сопоставления.

rbegin

Возврат итератора, указывающего на первый элемент в обратном сопоставлении.

rend

Возврат итератора, указывающего на местоположение после завершающего элемента в обратном сопоставлении.

size

Возврат количества элементов в сопоставлении.

буфер обмена

Обмен элементами между двумя сопоставлениями.

upper_bound

Возврат итератора, указывающего на первый элемент в сопоставлении со значением ключа, которое больше указанного ключа.

value_comp

Извлечение копии объекта сравнения, который используется для упорядочивания значений элементов в сопоставлении.

Операторы

operator[]

Вставка элемента в сопоставление с заданным значением ключа.

operator=

Замена элементов сопоставления копией другого сопоставления.

Требования

Заголовок: <map>

Пространство имен: std

См. также

Ссылки

Потокобезопасность в стандартной библиотеке C++

Библиотека стандартных шаблонов

Основные понятия

Контейнеры

Другие ресурсы

члены<сопоставление>