- Класс map
- Синтаксис
- Параметры
- Remarks
- Члены
- Конструкторы
- Определения типов
- Функции элементов
- Операторы
- allocator_type
- Пример
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- begin
- Возвращаемое значение
- Пример
- cbegin
- Возвращаемое значение
- Remarks
- Возвращаемое значение
- Remarks
- clear
- Пример
- const_iterator
- Remarks
- Пример
- const_pointer
- Remarks
- const_reference
- Пример
- const_reverse_iterator
- Remarks
- Пример
- count
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- contains
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- crbegin
- Возвращаемое значение
- Remarks
- Пример
- crend
- Возвращаемое значение
- Remarks
- Пример
- difference_type
- Remarks
- Пример
- emplace
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- emplace_hint
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- empty
- Возвращаемое значение
- Пример
- Возвращаемое значение
- Remarks
- equal_range
- Параметры
- Возвращаемое значение
- Пример
- erase
- Параметры
- Возвращаемое значение
- Пример
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- get_allocator
- Возвращаемое значение
- Remarks
- Пример
- insert
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- iterator
- Remarks
- Пример
- key_comp
- Возвращаемое значение
- Remarks
- Пример
- key_compare
- Remarks
- Пример
- key_type
- Remarks
- Пример
- lower_bound
- Параметры
- Возвращаемое значение
- Пример
- Параметры
- Remarks
- Пример
- mapped_type
- Remarks
- Пример
- max_size
- Возвращаемое значение
- Пример
- operator[]
- Параметры
- Возвращаемое значение
- Remarks
- Пример
- operator=
- Параметры
- Remarks
- Пример
- pointer
- Remarks
- rbegin
- Возвращаемое значение
- Remarks
- Пример
- reference
- Пример
- Возвращаемое значение
- Remarks
- Пример
- reverse_iterator
- Remarks
- Пример
- Возвращаемое значение
- Пример
- size_type
- Пример
- позиции
- Параметры
- Remarks
- Пример
- upper_bound
- Параметры
- Возвращаемое значение
- Пример
- value_comp
- Возвращаемое значение
- Remarks
- Пример
- value_type
Класс map
Используется для хранения и извлечения данных из коллекции, в которой каждый элемент является парой, обладающей одновременно значением данных и ключом сортировки. Значение ключа уникально и применяется для автоматической сортировки данных.
Значение элемента в сопоставлении можно изменить напрямую. Значение ключа является константой и не может быть изменено. Вместо этого значения ключей, связанные со старыми элементами, необходимо удалить и вставить новые значения ключей для новых элементов.
Синтаксис
Параметры
Key
Тип данных ключа, который должен храниться в map .
Type
Тип данных элемента для сохранения в map .
Traits
Тип, предоставляющий объект функции, который может сравнить два значения элементов как ключи сортировки для определения их относительного порядка в map . Этот аргумент является необязательным, и в качестве значения по умолчанию используется бинарный предикат less .
В C++ 14 можно включить разнородный Уточняющий запрос, указав std::less<> предикат, не имеющий параметров типа. Дополнительные сведения см. в разделе разнородный Уточняющий запрос в ассоциативных контейнерах .
Allocator
Тип, представляющий сохраненный объект распределителя, который инкапсулирует сведения о выделении и освобождении памяти для сопоставления. Этот аргумент является необязательным, и значением по умолчанию является allocator
Remarks
Класс map в стандартной библиотеке С++ — это:
Контейнер переменного размера, фактически извлекающий значения элементов на основе связанных значений ключей.
Реверсивный, поскольку он предоставляет двунаправленные итераторы для получения доступа к его элементам.
Сортируется, поскольку его элементы упорядочены по значениям ключей в соответствии с заданной функцией сравнения.
Является уникальным, поскольку каждый его элемент должен обладать уникальным ключом.
Является контейнером ассоциативной пары, поскольку его значения данных элементов отличаются от его значений ключей.
Шаблон класса, поскольку предоставляемые им функциональные возможности являются универсальными и не зависят от типа элемента или ключа. Типы данных, используемые для элементов и ключей, определяются как параметры в шаблоне класса вместе с функцией и распределителем сравнения.
Итератор, предоставляемый классом Map, является двунаправленным итератором, insert но map функции-члены класса и имеют версии, принимающие в качестве параметров шаблона более слабый итератор ввода, чьи функциональные требования меньше, чем гарантированные классом двунаправленных итераторов. Различные концепции итераторов связаны уточнениями функциональности. Каждая концепция итератора обладает собственным набором требований, и совместимые с ней алгоритмы должны быть ограничены этими требованиями. Итератор ввода может быть разыменован для обращения к определенному объекту и инкрементирован следующему итератору в последовательности.
Рекомендуется выбирать тип контейнера на основе типа поиска и вставки, который требуется приложению. Ассоциативные контейнеры оптимизированы для операций поиска, вставки и удаления. Функции-члены, которые явно поддерживают эти операции, выполняются в наихудшем времени, пропорционально логарифму числа элементов в контейнере. Вставка элементов не делает итераторы недействительными, а при удалении элементов недействительными становятся только итераторы, указывающие конкретно на удаленные элементы.
Рекомендуется сделать сопоставление предпочтительным ассоциативным контейнером, где условия, ассоциирующие значения с ключами, удовлетворяют требованиям приложения. Модель для этого типа структуры представляет собой упорядоченный список уникальных ключевых слов, с которыми связаны значения строк, предоставляющие определения. Если слово имеет несколько правильных определений, поэтому ключ не уникален, то multimap будет являться контейнером выбора. Если сохранен обычный список слов, подходящим контейнером будет набор. Если допускается многократное использование слов, допустимым вариантом будет множественный набор.
Таблица упорядочивает элементы, которыми она управляет, путем вызова хранимой функции типа key_compare . Этот сохраненный объект является функцией сравнения, доступ к которой осуществляется путем вызова key_comp метода. В общем случае все два заданных элемента сравниваются, чтобы определить, меньше ли один из них или эквивалентен ли он. После сравнения всех элементов создается упорядоченная последовательность неэквивалентных элементов.
Функция сравнения — это бинарный предикат, который вызывает строгое слабое упорядочение в стандартном математически смысле. Бинарный предикат f (x, y) — это объект функции, имеющий два объекта-аргумента x и y, а также возвращаемое значение true или false . Порядок, накладываемый на набор, является строгим слабым порядком, если бинарный предикат является нерефлексивным, антисимметричным и транзитивным, и если эквивалентность является транзитивным, то два объекта x и y определяются как эквивалентные, если используются значения f (x, y) и f (y, x) false . Если более строгое условие равенства между ключами заменяет условие эквивалентности, порядок становится общим (т. е. все элементы упорядочиваются в соответствии друг с другом) и сопоставленные ключи будут неотличимы друг от друга.
В C++ 14 можно включить разнородный Уточняющий запрос, указав std::less<> предикат или std::greater<> , не имеющий параметров типа. Дополнительные сведения см. в разделе разнородный Уточняющий запрос в ассоциативных контейнерах .
Члены
Конструкторы
Имя | Описание |
---|---|
map | Создание списка определенного размера или с элементами, обладающими указанным значением или указанным allocator , либо в качестве копии другого сопоставления. |
Определения типов
Имя | Описание |
---|---|
allocator_type | Typedef для класса allocator для объекта сопоставления. |
const_iterator | Typedef для двунаправленного итератора, который может читать const элемент в map . |
const_pointer | Typedef для указателя на const элемент в сопоставлении. |
const_reference | Typedef для ссылки на const элемент, хранящийся в сопоставлении для чтения и выполнения const операций. |
const_reverse_iterator | Тип, предоставляющий двунаправленный итератор, который может читать любой const элемент в map . |
difference_type | Цельночисленный Typedef со знаком для числа элементов в сопоставлении, в диапазоне между элементами, на которые указывают итераторы. |
iterator | Typedef для двунаправленного итератора, который может считывать или изменять любой элемент в сопоставлении. |
key_compare | Typedef для объекта функции, который может сравнить два ключа сортировки для определения относительного порядка двух элементов в map . |
key_type | Typedef для ключа сортировки, хранящегося в каждом элементе сопоставления. |
mapped_type | Typedef для данных, хранящихся в каждом элементе сопоставления. |
pointer | Typedef для указателя на const элемент в сопоставлении. |
reference | Typedef для ссылки на элемент, сохраненный в сопоставлении. |
reverse_iterator | Typedef для двунаправленного итератора, который может считывать или изменять элемент в обратном сопоставлении. |
size_type | Целочисленный Typedef без знака для числа элементов в сопоставлении |
value_type | Typedef для типа объекта, хранящейся в виде элемента в сопоставлении. |
Функции элементов
Функция-член | Описание |
---|---|
at | Находит элемент с указанным значением ключа. |
begin | Возвращает итератор, указывающий на первый элемент в map . |
cbegin | Возвращает константный итератор, указывающий на первый элемент в map . |
cend | Возврат итератора const после конца. |
clear | Стирает все элементы в map . |
contains C++ 20 | Проверьте, существует ли элемент с указанным ключом в map . |
count | Возврат числа элементов в сопоставлении, ключ которого соответствует ключу, заданному в параметре. |
crbegin | Возвращает константный итератор, указывающий на первый элемент в обращении map . |
crend | Возвращает константный итератор, указывающий на положение после последнего элемента в обращенном операторе map . |
emplace | Вставляет элемент, созданный на месте, в map . |
emplace_hint | Вставляет элемент, созданный на месте map , с указанием размещения. |
empty | Возвращает, true Если объект map пуст. |
end | Возврат итератора после конца. |
equal_range | Возвращает пару итераторов. Первый итератор в паре указывает на первый элемент в map с ключом, который больше указанного ключа. Второй итератор в паре указывает на первый элемент в map с ключом, который больше или равен данному ключу. |
erase | Удаление элемента или диапазона элементов в сопоставлении с заданных позиций. |
find | Возвращает итератор, указывающий на расположение элемента в с map ключом, равным указанному ключу. |
get_allocator | Возвращает копию объекта allocator , который используется для создания map . |
insert | Вставляет элемент или диапазон элементов в map в заданной позиции. |
key_comp | Возвращает копию объекта сравнения, который использовался для упорядочивания ключей в map . |
lower_bound | Возвращает итератор к первому элементу в map , имеющему значение ключа, которое больше или равно значению указанного ключа. |
max_size | Возвращает максимальную длину map . |
rbegin | Возвращает итератор, указывающий на первый элемент в обратном map . |
rend | Возвращает итератор, указывающий на положение после последнего элемента в обращенном операторе map . |
size | Возвращает количество элементов в контейнере map . |
swap | Обмен элементами между двумя сопоставлениями. |
upper_bound | Возвращает итератор к первому элементу в map , имеющему значение ключа, которое больше указанного ключа. |
value_comp | Извлекает копию объекта сравнения, который используется для упорядочивания значений элементов в map . |
Операторы
Имя | Описание |
---|---|
operator[] | Вставка элемента в сопоставление с заданным значением ключа. |
operator= | Замена элементов сопоставления копией другого сопоставления. |
allocator_type
Тип, представляющий класс распределителя для объекта-сопоставления.
Пример
См. пример для get_allocator для примера, в котором используется allocator_type .
Поиск элемента с заданным значением ключа.
Параметры
key
Значение ключа, которое необходимо найти.
Возвращаемое значение
Ссылка на значение данных найденного элемента.
Remarks
Если значение ключа аргумента не найдено, функция создает out_of_range объект класса класса.
Пример
begin
Возвращает итератор, обращающийся к первый элемент в контейнере map .
Возвращаемое значение
Двунаправленный итератор, обращающийся к первому элементу в map или местоположению, на котором заканчивается пустая схема.
Пример
cbegin
Возвращает const итератор, который обращается к расположению сразу за последним элементом в диапазоне.
Возвращаемое значение
const Двунаправленный итератор, обращающийся к первому элементу в диапазоне или расположению непосредственно за концом пустого диапазона (для пустого диапазона cbegin() == cend() ).
Remarks
С возвращаемым значением cbegin элементы в диапазоне нельзя изменять.
Эту функцию-член можно использовать вместо функции-члена begin() , чтобы гарантировать, что возвращаемое значение будет const_iterator . Как правило, он используется вместе с auto ключевым словом выведения типа, как показано в следующем примере. В этом примере рекомендуется использовать Container изменяемый (не- const ) контейнер любого типа, который поддерживает begin() и cbegin() .
Возвращает const итератор, который обращается к расположению сразу за последним элементом в диапазоне.
Возвращаемое значение
const Итератор двунаправленного доступа, указывающий на сразу за концом диапазона.
Remarks
cend используется для проверки того, прошел ли итератор конец диапазона.
Эту функцию-член можно использовать вместо функции-члена end() , чтобы гарантировать, что возвращаемое значение будет const_iterator . Как правило, он используется вместе с auto ключевым словом выведения типа, как показано в следующем примере. В этом примере рекомендуется использовать Container изменяемый (не- const ) контейнер любого типа, который поддерживает end() и cend() .
Значение, возвращаемое cend , не должно быть подвергнуто удалению ссылки.
clear
Стирает все элементы в сопоставлении.
Пример
В следующем примере демонстрируется использование map::clear функции члена.
const_iterator
Тип, предоставляющий двунаправленный итератор, который может читать const элемент в map .
Remarks
Тип const_iterator нельзя использовать для изменения значения элемента.
Объект, const_iterator определенный сопоставлением, указывает на элементы, являющиеся объектами value_type типа pair , первый элемент которых является ключом элемента, а второй — сопоставленной частью, которая удерживается элементом.
Для разыменования объекта, const_iterator cIter указывающего на элемент в сопоставлении, используйте -> оператор.
Чтобы получить доступ к значению ключа для элемента, используйте cIter -> first , что эквивалентно ( * cIter ). first .
Чтобы получить доступ к значению сопоставленной части элемента, используйте cIter -> second , что эквивалентно ( * cIter ). second .
Пример
См. пример для begin для примера, в котором используется const_iterator .
const_pointer
Тип, предоставляющий указатель на const элемент в сопоставлении.
Remarks
Тип const_pointer нельзя использовать для изменения значения элемента.
В большинстве случаев iterator для доступа к элементам в объекте Map следует использовать.
const_reference
Тип, предоставляющий ссылку на const элемент, хранящийся в сопоставлении для чтения и выполнения const операций.
Пример
const_reverse_iterator
Тип, предоставляющий двунаправленный итератор, который может читать любой const элемент в map .
Remarks
Тип const_reverse_iterator не может изменять значение элемента и используется для прохода по карте в обратную.
Объект, const_reverse_iterator определенный сопоставлением, указывает на элементы, являющиеся объектами value_type типа pair , первый элемент которых является ключом элемента, а второй — сопоставленной частью, которая удерживается элементом.
Для разыменования const_reverse_iterator crIter , указывающего на элемент в сопоставлении, используйте оператор -> .
Чтобы получить значение ключа для элемента, используйте crIter -> first , что эквивалентно ( * crIter ). first
Чтобы получить доступ к значению сопоставленной версии элемента, используйте crIter -> second , что эквивалентно ( * crIter ). first
Пример
rend Пример объявления и использования см. в примере для const_reverse_iterator .
count
Возвращает число элементов в объекте map, ключи которых соответствуют ключу, заданному параметром.
Параметры
key
Значение ключа для сравнения с ключами элементов объекта map.
Возвращаемое значение
1, если объект map содержит элемент, ключ сортировки которого совпадает с ключом параметра. 0, если объект map не содержит ни одного элемента с соответствующим ключом.
Remarks
Функция-член возвращает количество элементов x в диапазоне
[ lower_bound (ключ), upper_bound (ключ))
— 0 или 1 для map, который является уникальным ассоциативным контейнером.
Пример
В следующем примере демонстрируется использование map::count функции члена.
contains
Проверяет, существует ли элемент с указанным ключом в map .
Параметры
key
Искомое значение ключа элемента.
Возвращаемое значение
true значение, если элемент найден в контейнере; false в противном случае — значение.
Remarks
contains() Новое в C++ 20. Чтобы использовать его, укажите /std:c++latest параметр компилятора.
template bool contains(const K& key) const принимает участие в разрешении перегрузки только в key_compare том случае, если является прозрачным. Дополнительные сведения см. в разделе разнородный Уточняющий запрос в ассоциативных контейнерах .
Пример
crbegin
Возвращает константный итератор на первый элемент в обратной карте.
Возвращаемое значение
Константный Обратный двунаправленный итератор, обращающийся к первому элементу в обратную map или обращающийся к последнему элементу в необращенном порядке map .
Remarks
crbegin используется с обратным map так же, как используется begin с map .
При возвращении значения crbegin map объект не может быть изменен
crbegin можно использовать для перебора map в обратном порядке.
Пример
crend
Возвращает константный итератор, адресующий положение после последнего элемента в обратном сопоставлении.
Возвращаемое значение
Константный Обратный двунаправленный итератор, который обращается к расположению, следующему за последним элементом в обращении map (расположении, предшествующем первому элементу в неизмененном порядке map ).
Remarks
crend используется с обратным сопоставлением так же, как и end с map .
При возвращении значения crend map объект не может быть изменен.
crend используется, чтобы проверить, достиг ли итератор конца map .
Значение, возвращаемое crend , не должно быть подвергнуто удалению ссылки.
Пример
difference_type
Целочисленный тип со знаком, который можно использовать для представления количества элементов в сопоставлении в диапазоне между элементами, на которые указывают итераторы.
Remarks
difference_type — тип, возвращаемый при вычитании или приращении через итераторы контейнера. difference_type обычно используется для представления количества элементов в диапазоне [ first, last) между итераторами first и last , включая элемент, на который указывает first , и диапазон элементов до элемента, на который указывает last , но не включая его.
Несмотря на то, difference_type что доступен для всех итераторов, удовлетворяющих требованиям итератора ввода, который включает класс двунаправленных итераторов, поддерживаемых обратимыми контейнерами, такими как набор, вычитание между итераторами поддерживается только итераторами произвольного доступа, предоставляемыми контейнером произвольного доступа, таким как Vector.
Пример
emplace
Вставляет в сопоставление элемент, созданный на месте (без выполнения операций копирования или перемещения).
Параметры
args
Аргументы, перенаправляемые для создания элемента, который необходимо вставить в карту, если он уже не содержит элемент, значение которого эквивалентно упорядочено.
Возвращаемое значение
Объект pair , bool компонент которого имеет значение true , если была сделана вставка, и false если она уже содержала элемент эквивалентного значения в упорядочении. Компонент итератора пары «возвращаемое значение» указывает на вновь вставленный элемент, если bool компонент имеет значение true, или на существующий элемент, если bool компонент имеет значение false.
Для доступа к компоненту-итератору pair pr используйте pr.first ; для разыменования его используйте *pr.first . Чтобы получить доступ к bool компоненту, используйте pr.second . См. пример кода далее в этой статье.
Remarks
Эта функция не делает недействительными никакие итераторы или ссылки.
Во время назначения места при возникновении исключения состояние контейнера не изменяется.
value_type Элемент является парой, поэтому значение элемента будет упорядоченной парой, первый компонент которой равен значению ключа, а второй компонент равен значению данных элемента.
Пример
emplace_hint
Вставляет созданный элемент на место (операции копирования или перемещения не выполняются) с указанием о размещении.
Параметры
args
Аргументы, перенаправляемые для создания элемента, который необходимо вставить в карту, если эта схема уже не содержит этот элемент или, в более общем случае, если он уже не содержит элемент, ключ которого эквивалентно упорядочен.
where
Место начала поиска правильной точки вставки. (Если точка непосредственно перед точкой, то Вставка может выполняться в периодической константе вместо логарифмического времени.)
Возвращаемое значение
Итератор, указывающий на вновь вставленный элемент.
Если вставка не удалась, так как элемент уже существует, возвращается итератор, указывающий на существующий элемент с его ключом.
Remarks
Эта функция не делает недействительными никакие итераторы или ссылки.
Во время назначения места при возникновении исключения состояние контейнера не изменяется.
value_type Элемент является парой, поэтому значение элемента будет упорядоченной парой, первый компонент которой равен значению ключа, а второй компонент равен значению данных элемента.
Пример
empty
Проверяет, что сопоставление пустое.
Возвращаемое значение
true значение, если схема пуста; false значение, если схема не пуста.
Пример
Возврат итератора после конца.
Возвращаемое значение
Итератор после конца. Если карта пуста, то map::end() == map::begin() .
Remarks
end используется для проверки того, прошел ли итератор конец его сопоставлений.
Значение, возвращаемое end , не должно быть подвергнуто удалению ссылки.
Пример кода см. в разделе map::find .
equal_range
Возвращает пару итераторов, представляющих lower_bound ключ и upper_bound ключ.
Параметры
key
Ключевое значение для сравнения с ключом сортировки элемента из сопоставления, в котором ведется поиск.
Возвращаемое значение
Для доступа к первому итератору пары pr , возвращаемой функцией-членом, нужно использовать pr . во- первых, и для разыменования итератора нижней границы используйте * ( pr . первый). Для доступа ко второму итератору пары pr , возвращаемой функцией-членом, нужно использовать pr . во-вторых, а для разыменования итератора верхней границы используйте * ( pr . второй).
Пример
erase
Удаляет элемент или диапазон элементов из сопоставления из указанной позиции или удаляет элементы, которые соответствуют указанному ключу.
Параметры
Where
Положение удаляемого элемента.
First
Положение первого удаляемого элемента.
Last
Позиция после последнего элемента для удаления.
Key
Значение ключа удаляемых элементов.
Возвращаемое значение
Для первых двух функций-членов это двунаправленный итератор, обозначающий первый элемент, остающийся после любых удаленных элементов, или элемент в конце сопоставления, если таких элементов нет.
Третья функция-член возвращает количество элементов, которые были удалены из сопоставления.
Пример
Возвращает итератор, ссылающийся на элемент в карте, ключ которого эквивалентен заданному ключу.
Параметры
key
Значение ключа, с которым сравнивается ключ сортировки элемента из карты, по которой выполняется поиск.
Возвращаемое значение
Итератор, который ссылается на расположение элемента с указанным ключом или расположение после последнего элемента в map ( map::end() ), если совпадение для ключа не найдено.
Remarks
Функция-член возвращает итератор, который ссылается на элемент в, map ключ сортировки которого эквивалентен ключу аргумента в бинарном предикате, который вызывает упорядочивание на основе отношения сравнения «меньше».
Если возвращаемое значение find назначается const_iterator , объект Map изменить нельзя. Если возвращаемое значение find присваивается iterator , то объект Map можно изменить
Пример
get_allocator
Возвращает копию объекта-распределителя, использованного для создания сопоставления.
Возвращаемое значение
Распределитель, используемый сопоставлением.
Remarks
Распределители для класса map определяют, как это класс управляет памятью. Распределителей по умолчанию в классах контейнеров стандартной библиотеки C++ достаточно для большинства задач программирования. Написание и использование собственного класса распределителя требует расширенных навыков работы с C++.
Пример
insert
Вставляет элемент или диапазон элементов в сопоставление.
Параметры
Val
Значение элемента, вставляемого в карту, если он уже не содержит элемент, ключ которого эквивалентно упорядочен.
Where
Место начала поиска правильной точки вставки. (Если эта точка непосредственно предшествует Where , то вставка может выполняться в периодической константе вместо логарифмического времени.)
ValTy
Параметр шаблона, указывающий тип аргумента, который может использоваться сопоставлением для создания элемента value_type , и идеального перенаправления Val в качестве аргумента.
First
Позиция первого элемента, который следует скопировать.
Last
Позиция непосредственно перед последним элементом, который следует скопировать.
InputIterator
Аргумент функции-шаблона, соответствующий требованиям итератора ввода , указывающего на элементы типа, которые могут использоваться для построения value_type объектов.
IList
Объект, initializer_list из которого копируются элементы.
Возвращаемое значение
Одноэлементные функции-члены (1) и (2) возвращают объект, pair bool компонент которого имеет значение true, если была произведена вставка, и значение false, если в карте уже содержится элемент, ключ которого имеет эквивалентное значение в упорядочении. Компонент итератора пары «возвращаемое значение» указывает на вновь вставленный элемент, если bool компонент имеет значение true, или на существующий элемент, если bool компонент имеет значение false.
Одноэлементные функции-члены с подсказкой (3) и (4) возвращают итератор, который указывает на позицию, где новый элемент был вставлен, или, если элемент с эквивалентным ключом уже существует, указывает на существующий элемент.
Remarks
Эта функция не делает никакие итераторы, указатели или ссылки недействительными.
При вставке всего одного элемента при возникновении исключения состояние контейнера не изменяется. Если во время вставки нескольких элементов вызывается исключение, контейнер остается в неопределенном, но допустимом состоянии.
Чтобы получить доступ к компоненту итератора pair pr , возвращаемому функциями-членами с одним элементом, используйте оператор pr.first ; для разыменования итератора в возвращенной паре используйте *pr.first , предоставив элемент. Чтобы получить доступ к bool компоненту, используйте pr.second . См. пример кода далее в этой статье.
value_type Контейнером является typedef, принадлежащий контейнеру, а для Map map ::value_type — pair . Значение элемента — это упорядоченная пара, в которой первый компонент эквивалентен значению ключа, а второй компонент — значению данных элемента.
Функция-член с диапазоном (5) вставляет последовательность значений элементов в сопоставление, соответствующее каждому элементу, адресованному итератором в диапазоне [First, Last) . Следовательно, Last не вставляется. Контейнер функции-члена end() ссылается на позицию сразу после последнего элемента в контейнере. Например, оператор m.insert(v.begin(), v.end()); пытается вставить все элементы v в m . Вставляются только элементы с уникальными значениями в диапазоне. Повторяющиеся значения игнорируются. Чтобы увидеть, какие элементы отклонены, используйте одноэлементные версии insert .
Функция-член списка инициализаторов (6) использует initializer_list для копирования элементов в карту.
Для вставки элемента, созданного на месте (т. е. не выполняются операции копирования или перемещения), map::emplace см map::emplace_hint . и.
Пример
iterator
Тип, предоставляющий двунаправленный итератор, который может считывать или изменять любой элемент в сопоставлении.
Remarks
Итератор, определяемый картой, указывает на элементы, являющиеся объектами value_type типа, pair первый элемент которых является ключом элемента, а второй элемент — сопоставленная база данных, удерживаемая элементом.
Для разыменования итератора iter , указывающего на элемент в сопоставлении, используйте -> оператор.
Чтобы получить доступ к значению ключа для элемента, используйте Iter->first , что эквивалентно (*Iter).first . Чтобы получить доступ к значению сопоставленной версии элемента, используйте Iter->second , что эквивалентно (*Iter).second .
Пример
begin Пример объявления и использования см. в разделе пример iterator .
key_comp
Извлекает копию объекта сравнения, использованного для упорядочивания ключей в сопоставлении.
Возвращаемое значение
Возвращает объект-функцию, которую сопоставление использует для упорядочивания своих элементов.
Remarks
Хранимый объект определяет функцию-член
возвращающий значение, true Если left right в порядке сортировки предшествует и не равны.
Пример
key_compare
Тип, предоставляющий объект функции, который может сравнить два ключа сортировки для определения относительного порядка двух элементов в контейнере map .
Remarks
key_compare является синонимом для параметра-шаблона Traits .
Дополнительные сведения о Traits см. в разделе о map классе .
Пример
key_comp Пример объявления и использования см. в разделе пример key_compare .
key_type
Тип, который описывает ключ сортировки, хранящийся в каждом элементе сопоставления.
Remarks
key_type является синонимом для параметра-шаблона Key .
Дополнительные сведения о см Key . в подразделе «Примечания » статьи о map классе .
Пример
value_type Пример объявления и использования см. в разделе пример key_type .
lower_bound
Возвращает итератор, указывающий на первый элемент в сопоставлении с ключом, значение которого больше указанного ключа или равно ему.
Параметры
key
Ключевое значение для сравнения с ключом сортировки элемента из сопоставления, в котором ведется поиск.
Возвращаемое значение
Объект iterator или const_iterator , который обращается к расположению элемента в сопоставлении с ключом, который равен ключу аргумента или больше него, либо обращается к расположению, следующему за последним элементом в, map Если совпадение для ключа не найдено.
Если возвращаемое значение lower_bound назначается const_iterator , объект Map изменить нельзя. Если возвращаемое значение lower_bound присваивается iterator , то объект Map можно изменить.
Пример
Создает сопоставление, которое является пустым или копией части или целого другого сопоставления.
Параметры
Al
Класс распределителя памяти, который будет использоваться для этого объекта-сопоставления. Значение по умолчанию — Allocator .
Comp
Функция сравнения типа const Traits , используемая для упорядочивания элементов в map . Значение по умолчанию — hash_compare .
Right
Сопоставление, копией которого будет создаваемое сопоставление.
First
Положение первого элемента в диапазоне копируемых элементов.
Last
Положение первого элемента после диапазона копируемых элементов.
IList
Объект initializer_list, из которого будут скопированы элементы.
Remarks
Все конструкторы хранят тип объекта распределителя, который управляет хранилищем памяти для Map и затем может быть возвращен путем вызова метода get_allocator . Параметр-распределитель часто не указывается в объявлениях класса и в макросах предварительной обработки, используемых для замены альтернативных распределителей.
Все конструкторы инициализируют свои сопоставления.
Все конструкторы хранят объект функции с признаками типа, который используется для установления порядка ключей в сопоставлении и может быть впоследствии возвращен вызовом key_comp .
Первые три конструктора задают пустую начальную карту, второй задает тип функции сравнения ( Comp ), используемой при установлении порядка элементов, а третий явно указывает тип распределителя ( Al ) для использования. Ключевое слово explicit подавляет некоторые виды автоматического преобразования типов.
Четвертый конструктор указывает копию схемы Right .
Пятый конструктор указывает копию Map путем перемещения Right .
В шестом, седьмом и 8 конструкторах используется объект, initializer_list из которого копируются элементы.
Следующие три конструктора копируют диапазон [First, Last) сопоставления с повышением точности при указании типа функции сравнения класса Traits и распределителя.
Пример
mapped_type
Тип, который представляет данные, хранящиеся в сопоставлении.
Remarks
Тип mapped_type является синонимом для параметра шаблона типа класса.
Дополнительные сведения о Type см. в разделе о map классе .
Пример
value_type Пример объявления и использования см. в разделе пример mapped_type .
max_size
Возврат максимальной длины сопоставления.
Возвращаемое значение
Максимально возможная длина сопоставления.
Пример
operator[]
Вставка элемента в сопоставление с заданным значением ключа.
Параметры
key
Значение ключа элемента, который необходимо вставить.
Возвращаемое значение
Ссылка на значение данных вставленного элемента.
Remarks
Если значение ключа аргумента не найдено, оно вставляется вместе со значением по умолчанию для типа данных.
operator[] может использоваться для вставки элементов в карту m с помощью mMap c вывести все элементы = DataValue; WHERE, где DataValue — это значение mapped_type элемента со значением ключа key .
При использовании operator[] для вставки элементов возвращаемая ссылка не отображает, меняет ли вставка уже существующий элемент или создает новый. Функции-члены find и insert могут использоваться для определения того, существует ли уже элемент с указанным ключом перед вставкой.
Пример
operator=
Замена элементов сопоставления копией другого сопоставления.
Параметры
right
Объект, который map копируется в map .
Remarks
После стирания любых существующих элементов в map operator= копирует или перемещает содержимое right в карту.
Пример
pointer
Тип, предоставляющий указатель на элемент в сопоставлении.
Remarks
Тип pointer можно использовать для изменения значения элемента.
В большинстве случаев iterator для доступа к элементам в объекте Map следует использовать.
rbegin
Возвращает итератор, адресующий первый элемент в обратном сопоставлении.
Возвращаемое значение
Обратный двунаправленный итератор, адресующий первый элемент в обратном сопоставлении или адресующий элемент, который был последним элементов в сопоставлении до изменения его порядка на противоположный.
Remarks
rbegin используется с обратным картой точно так же, как используется begin с картой.
Если возвращаемое значение rbegin назначается const_reverse_iterator , то объект Map изменить нельзя. Если возвращенное значение rbegin назначается reverse_iterator , то объект-сопоставление можно изменить.
rbegin можно использовать для перебора сопоставления в обратном порядке.
Пример
reference
Тип, предоставляющий ссылку на элемент, хранящийся в сопоставлении.
Пример
Возвращает итератор, адресующий положение после последнего элемента в обратном сопоставлении.
Возвращаемое значение
Обратный двунаправленный итератор, адресующий положение после последнего элемента в обратном сопоставлении (положение, которое предшествовало первому элементу в сопоставлении до изменения его порядка на противоположный).
Remarks
rend используется с обратным картой точно так же, как используется end с картой.
Если возвращаемое значение rend назначается const_reverse_iterator , то объект Map изменить нельзя. Если возвращенное значение rend назначается reverse_iterator , то объект-сопоставление можно изменить.
rend можно использовать для проверки, достиг ли итератор конца своего сопоставления.
Значение, возвращаемое rend , не должно быть подвергнуто удалению ссылки.
Пример
reverse_iterator
Тип, предоставляющий двунаправленный итератор, который может читать или изменять элементы в обратном сопоставлении.
Remarks
Тип reverse_iterator не может изменять значение элемента и используется для прохода по карте в обратную.
Объект, reverse_iterator определенный сопоставлением, указывает на элементы, являющиеся объектами value_type типа pair , первый элемент которых является ключом элемента, а второй — сопоставленной частью, которая удерживается элементом.
Для разыменования reverse_iterator спрайта , указывающего на элемент в сопоставлении, используйте -> оператор.
Чтобы получить доступ к значению ключа для элемента, используйте rIter -> First, который эквивалентен ( * rIter ). сначала. Чтобы получить доступ к значению сопоставленной части элемента, используйте rIter -> Second, который эквивалентен ( * rIter ). сначала.
Пример
rbegin Пример объявления и использования см. в разделе пример reverse_iterator .
Возвращает количество элементов в контейнере map .
Возвращаемое значение
Текущая длина сопоставления.
Пример
В следующем примере демонстрируется использование map::size функции члена.
size_type
Беззнаковый целочисленный тип, который может представлять количество элементов в сопоставлении.
Пример
size Пример объявления и использования см. в примере для size_type .
позиции
Обмен элементами между двумя сопоставлениями.
Параметры
right
Сопоставление-аргумент предоставляет элементы для обмена с целевым сопоставлением.
Remarks
Функция-член не делает недействительными никакие ссылки, указатели или итераторы, обозначающие элементы в двух сопоставлениях, между которыми выполняется обмен элементами.
Пример
upper_bound
Возвращает итератор, указывающий на первый элемент в сопоставлении с ключом, значение которого равно указанному ключу или больше его.
Параметры
key
Аргумент-значение ключа для сравнения с значением ключа сортировки элемента сопоставления, в котором проводится поиск.
Возвращаемое значение
Объект iterator или const_iterator , который обращается к расположению элемента в сопоставлении с ключом, который больше, чем ключ аргумента, или, который обращается к расположению, следующему за последним элементом в, map Если совпадение для ключа не найдено.
Если возвращаемое значение назначено const_iterator , объект Map изменить нельзя. Если возвращаемое значение присвоено iterator , объект Map можно изменить.
Пример
value_comp
Функция-член возвращает объект-функцию, которая определяет порядок элементов в сопоставлении путем сравнения значений их ключей.
Возвращаемое значение
Возвращает объект-функцию сравнения, которую сопоставление использует для упорядочивания своих элементов.
Remarks
Для Map m, если два элемента E1(K1, D1) и E2(априорной оценкой K2, D2) являются объектами типа value_type , где K1 и K1 — это ключи типа, key_type а D1 и D2 — их данные типа mapped_type , то m.value_comp(e1, e2) эквивалентно m.key_comp(k1, k2) . Хранимый объект определяет функцию-член
Возвращает, true Если значение ключа left предшествует значению ключа в порядке сортировки и не равно ему right .
Пример
value_type
Тип объекта, хранящегося в качестве элемента в сопоставлении.
Источник