Класс 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.Если более строгое условие равенства между ключами заменяет условие эквивалентности, порядок становится общим (т. е. все элементы упорядочиваются в соответствии друг с другом) и сопоставленные ключи будут неотличимы друг от друга.
Члены
Конструкторы
Создание списка определенного размера или с элементами, обладающими указанным значением или указанным allocator, либо в качестве копии другого сопоставления. |
Определения типов
Typedef для класса allocator для объекта сопоставления. |
|
Typedef для двунаправленного итератора, который может считывать элемент const в сопоставлении. |
|
Typedef для указателя на элемент const в сопоставлении. |
|
Typedef для ссылки на элемент const, хранящийся в сопоставлении для чтения и выполнения операций const. |
|
Тип, предоставляющий двунаправленный итератор, который может считывать любой элемент const в сопоставлении. |
|
Цельночисленный Typedef со знаком для числа элементов в сопоставлении, в диапазоне между элементами, на которые указывают итераторы. |
|
Typedef для двунаправленного итератора, который может считывать или изменять любой элемент в сопоставлении. |
|
Typedef для объекта функции, который может сравнить два ключа сортировки для определения относительного порядка двух элементов в сопоставлении. |
|
Typedef для ключа сортировки, хранящегося в каждом элементе сопоставления. |
|
Typedef для данных, хранящихся в каждом элементе сопоставления. |
|
Typedef для указателя на элемент const в сопоставлении. |
|
Typedef для ссылки на элемент, сохраненный в сопоставлении. |
|
Typedef для двунаправленного итератора, который может считывать или изменять элемент в обратном сопоставлении. |
|
Целочисленный Typedef без знака для числа элементов в сопоставлении |
|
Typedef для типа объекта, хранящейся в виде элемента в сопоставлении. |
Функции-члены
Поиск элемента с заданным значением ключа. |
|
Возврат итератора, указывающего на первый элемент в сопоставлении. |
|
Возвращает итератор const, указывающего на первый элемент в сопоставлении. |
|
Возврат итератора const после конца. |
|
Стирает все элементы в сопоставлении. |
|
Возврат числа элементов в сопоставлении, ключ которого соответствует ключу, заданному в параметре. |
|
Возврат итератора const, указывающего на первый элемент в обратном сопоставлении. |
|
Возврат итератора const, указывающего на местоположение после завершающего элемента в обратном сопоставлении. |
|
Вставка в сопоставление элемента, созданного в качестве замены. |
|
Вставка в сопоставление элемента, созданного в качестве замены, с подсказкой о размещении. |
|
Возврат true, если сопоставление является пустым. |
|
Возврат итератора после конца. |
|
Возвращает пару итераторов. Первый итератор в паре указывает на первый элемент в map с ключом, который больше указанного ключа. Второй итератор в паре указывает на первый элемент в map с ключом, который больше или равен данному ключу. |
|
Удаление элемента или диапазона элементов в сопоставлении с заданных позиций. |
|
Возврат итератора, указывающего на расположение элемента в сопоставлении с ключом, равным указанному ключу. |
|
Возврат копии объекта allocator, который используется для формирования сопоставления. |
|
Вставка элемента или диапазона элементов в сопоставление в заданной позиции. |
|
Возврат копии объекта сравнения, который используется для упорядочивания ключей в сопоставлении. |
|
Возврат итератора, указывающего на первый элемент в сопоставлении с ключом, который больше или равен указанному ключу. |
|
Возврат максимальной длины сопоставления. |
|
Возврат итератора, указывающего на первый элемент в обратном сопоставлении. |
|
Возврат итератора, указывающего на местоположение после завершающего элемента в обратном сопоставлении. |
|
Возврат количества элементов в сопоставлении. |
|
Обмен элементами между двумя сопоставлениями. |
|
Возврат итератора, указывающего на первый элемент в сопоставлении со значением ключа, которое больше указанного ключа. |
|
Извлечение копии объекта сравнения, который используется для упорядочивания значений элементов в сопоставлении. |
Операторы
Вставка элемента в сопоставление с заданным значением ключа. |
|
Замена элементов сопоставления копией другого сопоставления. |
Требования
Заголовок: <map>
Пространство имен: std
См. также
Ссылки
Потокобезопасность в стандартной библиотеке C++
Библиотека стандартных шаблонов