Библиотека C ++ - <unordered_map>

Введение в unordered_map

Неупорядоченная карта - это словарная структура данных. Это последовательность пары (ключ, значение), где с каждым уникальным ключом связано только одно значение. Его часто называют ассоциативным массивом . Это позволяет быстро находить отдельные элементы на основе их ключей. Он также реализует оператор прямого доступа (оператор индекса []), который обеспечивает прямой доступ к отображаемому значению, используя его значение ключа в качестве аргумента.

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

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

Определение

Ниже приведено определение std :: unordered_map из заголовочного файла <unordered_map>.

template < class Key,
           class T,
           class Hash = hash<Key>,
           class Pred = equal_to<Key>,
           class Alloc = allocator< pair<const Key,T> >
           > class unordered_map;

Параметры

  • Key - Тип ключа.

  • T - Тип отображаемых значений.

  • Hash- Тип унарного функционального объекта, который принимает в качестве аргумента объект типа ключа и возвращает на его основе уникальное значение типа size_t .

  • Pred- Бинарный предикат, который имеет два аргумента ключевого типа и возвращает логическое значение.

  • Alloc - Тип объекта распределителя.

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

Типы участников

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

Sr.No. Типы участников Определение
1 key_type Ключ (первый параметр шаблона)
2 mapped_type T (Второй параметр шаблона)
3 тип ценности пара <const key_type, mapped_type>
4 хешер Третий параметр шаблона (по умолчанию: hash <key_type>)
5 key_equal Четвертый параметр шаблона (по умолчанию: equal_to <key_type>)
6 allocator_type Alloc (Пятый параметр шаблона)
7 Справка тип ценности&
8 const_reference const value_type &
9 указатель allocator_traits <Alloc> :: указатель
10 const_pointer allocator_traits <Alloc> :: const_pointer
11 итератор Прямой итератор для value_type value_type
12 const_iterator Прямой итератор для const value_type value_type
13 local_iterator Прямой итератор для value_type
14 const_local_iterator Прямой итератор для const value_type
15 разница_тип ptrdiff_t
16 size_type size_t

Функции из <unordered_map>

Ниже приведен список всех методов из заголовка <unordered_map>.

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

Sr.No. Метод и описание
1 unordered_map :: unordered_map конструктор по умолчанию

Создает пустой unordered_map с нулевыми элементами.

2 unordered_map :: unordered_map конструктор копирования

Создает unordered_map с копией каждого элемента, присутствующего в существующем unordered_map.

3 unordered_map :: unordered_map конструктор перемещения

Создает unordered_map с содержимым другого, используя семантику перемещения.

4 unordered_map :: unordered_map конструктор диапазона

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

5 unordered_map :: unordered_map конструктор initializer_list

Создает unordered_map из списка инициализации.

Деструктор

Sr.No. Метод и описание
1 unordered_map :: ~ unordered_map

Уничтожает объект unordered_map, освобождая его память.

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

Sr.No. Метод и описание
1 unordered_map :: at

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

2 unordered_map :: begin итератор контейнера

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

3 unordered_map :: begin итератор сегмента

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

4 unordered_map :: bucket

Возвращает номер сегмента, в котором находится элемент с ключом k .

5 unordered_map :: bucket_count

Возвращает количество сегментов в контейнере unordered_map.

6 unordered_map :: bucket_size

Возвращает количество элементов в n- м блоке.

7 unordered_map :: итератор контейнера cbegin

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

8 unordered_map :: итератор ведра cbegin

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

9 unordered_map :: итератор контейнера cend

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

10 unordered_map :: cend итератор ведра

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

11 unordered_map :: clear

Уничтожает unordered_map, удаляя все элементы, и устанавливает размер unordered_map равным нулю .

12 unordered_map :: count

Возвращает количество сопоставленных значений, связанных с ключом k .

13 unordered_map :: emplace

Расширяет контейнер, вставляя новый элемент.

14 unordered_map :: emplace_hint

Вставляет новый элемент в unordered_map, используя подсказку в качестве позиции для элемента.

15 unordered_map :: empty

Проверяет, является ли unordered_map пустым или нет.

16 unordered_map :: end итератор контейнера

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

17 unordered_map :: итератор конца сегмента

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

18 unordered_map :: равный

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

19 unordered_map :: стереть версию позиции

Удаляет один элемент unordered_map из позиции .

20 unordered_map :: версия ключа стирания

Удаляет сопоставленное значение, связанное с ключом k .

21 год unordered_map :: стереть версию диапазона

Удаляет диапазон элемента из unordered_map.

22 unordered_map :: найти

Находит элемент, связанный с ключом k .

23 unordered_map :: get_allocator

Возвращает распределитель, связанный с unordered_map.

24 unordered_map :: hash_function

Вычисляет объект хэш-функции, используемый контейнером unordered_map.

25 unordered_map :: insert

Расширяет контейнер, вставляя новый элемент в unordered_map.

26 unordered_map :: вставить версию перемещения

Расширяет контейнер, вставляя новый элемент в unordered_map.

27 unordered_map :: вставить версию подсказки

Расширяет контент, вставляя новый элемент в unordered_map.

28 unordered_map :: вставить ход и версию подсказки

Расширяет unordered_map, вставляя новый элемент.

29 unordered_map :: вставить версию диапазона

Расширяет контейнер, вставляя новые элементы в unordered_map.

30 unordered_map :: вставить версию initializer_list

Расширяет карту, вставляя новый элемент из списка инициализаторов.

31 год unordered_map :: key_eq

Возвращает функцию, которая сравнивает ключи на равенство.

32 unordered_map :: load_factor

Возвращает текущий коэффициент загрузки контейнера unordered_map.

33 unordered_map :: max_bucket_count

Возвращает максимальное количество сегментов, которое может иметь контейнер unordered_map.

34 unordered_map :: max_load_factor получить версию

Возвращает текущий максимальный коэффициент загрузки для контейнера unordered_map.

35 год unordered_map :: max_load_factor установить версию

Назначает новый коэффициент загрузки для контейнера unordered_map.

36 unordered_map :: max_size

Возвращает максимальное количество элементов, которое может содержать unordered_map.

37 unordered_map :: operator = скопировать версию

Назначает новое содержимое unordered_map, заменяя старое, и при необходимости изменяет размер.

38 unordered_map :: operator = переместить версию

Переместите содержимое одной unordered_map в другую и при необходимости измените размер.

39 unordered_map :: operator = initializer_list версия

Скопируйте элементы из списка инициализаторов в unordered_map.

40 unordered_map :: operator []

Если ключ k соответствует элементу в контейнере, метод возвращает ссылку на элемент.

41 год unordered_map :: operator [] переместить версию

Если ключ k соответствует элементу в контейнере, метод возвращает ссылку на элемент.

42 unordered_map :: rehash

Устанавливает количество ведер в контейнере равным n или более.

43 год unordered_map :: резерв

Устанавливает количество сегментов в контейнере как наиболее подходящее, чтобы содержать не менее n элементов.

44 unordered_map :: size

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

45 unordered_map :: swap

Меняет содержимое первого unordered_map на другое.

Перегруженные функции, не являющиеся членами

Sr.No. Метод и описание
1 unordered_map :: operator ==

Проверяет, равны ли два unordered_maps.

2 unordered_map :: оператор! =

Проверяет, равны ли два unordered_maps.

3 unordered_map :: swap

Меняет содержимое первого unordered_map на другое.

Введение в unordered_multimap

Unordered_multimap - это словарная структура данных. Это последовательность пары (ключ, значение), где разные элементы могут иметь эквивалентные ключи. Элементы с эквивалентными ключами сгруппированы вместе в одном сегменте и таким образом, что итератор equal_range может перебирать их все.

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

Определение

Ниже приведено определение std :: unordered_multimap из заголовочного файла <unordered_map>.

template < class Key, 
           class T,
           class Hash = hash<Key>,
           class Pred = equal_to<Key>,
           class Alloc = allocator< pair<const Key,T> >
           > class unordered_multimap;

Параметры

  • Key - Тип ключа.

  • T - Тип отображаемых значений.

  • Hash- Тип унарного функционального объекта, который принимает в качестве аргумента объект типа ключа и возвращает на его основе уникальное значение типа size_t .

  • Pred- Бинарный предикат, который имеет два аргумента ключевого типа и возвращает логическое значение.

  • Alloc - Тип объекта распределителя.

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

Типы участников

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

Sr.No. Типы участников Определение
1 key_type Ключ (первый параметр шаблона)
2 mapped_type T (Второй параметр шаблона)
3 тип ценности пара <const key_type, mapped_type>
4 хешер Третий параметр шаблона (по умолчанию: hash <key_type>)
5 key_equal Четвертый параметр шаблона (по умолчанию: equal_to <key_type>)
6 allocator_type Alloc (Пятый параметр шаблона)
7 Справка тип ценности&
8 const_reference const value_type &
9 указатель allocator_traits <Alloc> :: указатель
10 const_pointer allocator_traits <Alloc> :: const_pointer
11 итератор Прямой итератор для value_type value_type
12 const_iterator Прямой итератор для const value_type value_type
13 local_iterator Прямой итератор для value_type
14 const_local_iterator Прямой итератор для const value_type
15 разница_тип ptrdiff_t
16 size_type size_t

Функции из <unordered_multimap>

Ниже приведен список всех методов из заголовка <unordered_map>.

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

Sr.No. Метод и описание
1 unordered_multimap :: unordered_multimap () конструктор по умолчанию

Создает пустой unordered_multimap с нулевыми элементами.

2 unordered_multimap :: unordered_multimap () конструктор копирования

Создает unordered_multimap с копией каждого элемента, присутствующего в существующем unordered_multimap.

3 unordered_multimap :: unordered_multimap () конструктор перемещения

Создает unordered_multimap с содержимым other, используя семантику перемещения.

4 unordered_multimap :: unordered_multimap () конструктор диапазона

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

5 unordered_multimap :: unordered_multimap () конструктор initializer_list

Создает unordered_multimap из списка инициализации.

Деструктор

Sr.No. Метод и описание
1 unordered_multimap :: ~ unordered_multimap ()

Уничтожает объект unordered_multimap, освобождая его память.

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

Sr.No. Метод и описание
1 unordered_multimap :: begin () контейнерный итератор

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

2 unordered_multimap :: begin () итератор ведра

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

3 unordered_multimap :: bucket ()

Возвращает номер сегмента, в котором находится элемент с ключом k .

4 unordered_multimap :: bucket_count ()

Возвращает количество сегментов в контейнере unordered_multimap.

5 unordered_multimap :: bucket_size ()

Возвращает количество элементов в n- м блоке.

6 unordered_multimap :: cbegin () контейнерный итератор

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

7 unordered_multimap :: cbegin () итератор ведра

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

8 unordered_multimap :: cend () контейнерный итератор

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

9 unordered_multimap :: cend () итератор ведра

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

10 unordered_multimap :: clear ()

Уничтожает unordered_multimap, удаляя все элементы, и устанавливает размер unordered_multimap равным нулю .

11 unordered_multimap :: count ()

Возвращает количество сопоставленных значений, связанных с ключом k .

12 unordered_multimap :: emplace ()

Расширяет контейнер, вставляя новый элемент.

13 unordered_multimap :: emplace_hint ()

Вставляет новый элемент в unordered_multimap, используя подсказку в качестве позиции для элемента.

14 unordered_multimap :: empty ()

Проверяет, является ли unordered_multimap пустым или нет.

15 unordered_multimap :: end () контейнерный итератор

Возвращает итератор, который указывает на элемент за пределами конца в unordered_multimap.

16 unordered_multimap :: end () итератор ведра

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

17 unordered_multimap :: equal_range ()

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

18 unordered_multimap :: erase () версия позиции

Удаляет один элемент unordered_multimap из позиции .

19 unordered_multimap :: erase () версия ключа

Удаляет сопоставленное значение, связанное с ключом k .

20 unordered_multimap :: erase () версия диапазона

Удаляет диапазон элемента из unordered_multimap.

21 год unordered_multimap :: find ()

Находит элемент, связанный с ключом k .

22 unordered_multimap :: get_allocator ()

Возвращает распределитель, связанный с unordered_multimap.

23 unordered_multimap :: hash_function ()

Вычисляет объект хэш-функции, используемый контейнером unordered_multimap.

24 unordered_multimap :: insert () значение версии

Расширяет контейнер, вставляя новый элемент в unordered_multimap.

25 unordered_multimap :: insert () переместить версию

Расширяет unordered_multimap, вставляя новый элемент.

26 unordered_multimap :: insert () версия подсказки

Расширяет контейнер, вставляя новый элемент в unordered_multimap.

27 unordered_multimap :: insert () версия перемещения подсказки

Расширяет контейнер, вставляя новый элемент в unordered_multimap с использованием семантики перемещения.

28 unordered_multimap :: insert () версия диапазона

Расширяет контейнер, вставляя новые элементы в unordered_multimap.

29 unordered_multimap :: insert () версия initializer_list

Расширяет unordered_multimap, вставляя новый элемент из списка инициализаторов.

30 unordered_multimap :: key_eq ()

Возвращает функцию, которая сравнивает ключи на равенство.

31 год unordered_multimap :: load_factor ()

Возвращает текущий коэффициент загрузки контейнера unordered_multimap.

32 unordered_multimap :: max_bucket_count ()

Возвращает максимальное количество сегментов, которое может иметь контейнер unordered_multimap.

33 unordered_multimap :: max_load_factor () получить версию

Возвращает текущий максимальный коэффициент загрузки для контейнера unordered_multimap.

34 unordered_multimap :: max_load_factor () установить версию

Назначает новый коэффициент загрузки для контейнера unordered_multimap.

35 год unordered_multimap :: max_size ()

Возвращает максимальное количество элементов, которое может содержать unordered_multimap.

36 unordered_multimap :: operator = () скопировать версию

Назначает новое содержимое unordered_multimap, заменяя старое, и при необходимости изменяет размер.

37 unordered_multimap :: operator = () переместить версию

Переместите содержимое одной unordered_multimap в другую и при необходимости измените размер.

38 unordered_multimap :: operator = () версия initializer_list

Скопируйте элементы из списка инициализаторов в unordered_multimap.

39 unordered_multimap :: rehash ()

Устанавливает количество ведер в контейнере равным n или более.

40 unordered_multimap :: резерв ()

Устанавливает количество сегментов в контейнере как наиболее подходящее, чтобы содержать не менее n элементов.

41 год unordered_multimap :: size ()

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

42 unordered_multimap :: swap ()

Меняет содержимое первой unordered_multimap на другую.

Перегруженные функции, не являющиеся членами

Sr.No. Метод и описание
1 unordered_multimap :: operator == ()

Проверяет, равны ли два unordered_multimaps.

2 unordered_multimap :: оператор! = ()

Проверяет, равны ли два unordered_multimaps.

3 unordered_multimap :: swap ()

Меняет содержимое первой unordered_multimap на другую.