Namespaces
Variants

std::unordered_multimap<Key,T,Hash,KeyEqual,Allocator>:: unordered_multimap

From cppreference.net

(Примечание: В данном фрагменте HTML отсутствует текстовое содержимое для перевода - присутствуют только HTML-теги и атрибуты, которые согласно инструкциям не подлежат переводу)
(1)
unordered_multimap ( )
: unordered_multimap ( size_type ( /* unspecified */ ) ) { }
(начиная с C++11)
(до C++20)
unordered_multimap ( ) ;
(начиная с C++20)
explicit unordered_multimap ( size_type bucket_count,

const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(2) (начиная с C++11)
unordered_multimap ( size_type bucket_count,

const Allocator & alloc )

: unordered_multimap ( bucket_count, Hash ( ) , key_equal ( ) , alloc ) { }
(3) (начиная с C++14)
unordered_multimap ( size_type bucket_count,

const Hash & hash,
const Allocator & alloc )

: unordered_multimap ( bucket_count, hash, key_equal ( ) , alloc ) { }
(4) (начиная с C++14)
explicit unordered_multimap ( const Allocator & alloc ) ;
(5) (начиная с C++11)
template < class InputIt >

unordered_multimap ( InputIt first, InputIt last,
size_type bucket_count = /* не указано */ ,
const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(6) (начиная с C++11)
template < class InputIt >

unordered_multimap ( InputIt first, InputIt last,
size_type bucket_count,
const Allocator & alloc )
: unordered_multimap ( first, last,

bucket_count, Hash ( ) , key_equal ( ) , alloc ) { }
(7) (начиная с C++14)
template < class InputIt >

unordered_multimap ( InputIt first, InputIt last,
size_type bucket_count,
const Hash & hash,
const Allocator & alloc )
: unordered_multimap ( first, last,

bucket_count, hash, key_equal ( ) , alloc ) { }
(8) (начиная с C++14)
unordered_multimap ( const unordered_multimap & other ) ;
(9) (начиная с C++11)
unordered_multimap ( const unordered_multimap & other, const Allocator & alloc ) ;
(10) (начиная с C++11)
unordered_multimap ( unordered_multimap && other ) ;
(11) (начиная с C++11)
unordered_multimap ( unordered_multimap && other, const Allocator & alloc ) ;
(12) (начиная с C++11)
unordered_multimap ( std:: initializer_list < value_type > init,

size_type bucket_count = /* unspecified */ ,
const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(13) (начиная с C++11)
unordered_multimap ( std:: initializer_list < value_type > init,

size_type bucket_count,
const Allocator & alloc )
: unordered_multimap ( init, bucket_count,

Hash ( ) , key_equal ( ) , alloc ) { }
(14) (начиная с C++14)
unordered_multimap ( std:: initializer_list < value_type > init,

size_type bucket_count,
const Hash & hash,
const Allocator & alloc )
: unordered_multimap ( init, bucket_count,

hash, key_equal ( ) , alloc ) { }
(15) (начиная с C++14)
template < container-compatible-range < value_type > R >

unordered_multimap ( std:: from_range_t , R && rg,
size_type bucket_count = /* см. описание */ ,
const Hash & hash = Hash ( ) ,
const key_equal & equal = key_equal ( ) ,

const Allocator & alloc = Allocator ( ) ) ;
(16) (начиная с C++23)
template < container-compatible-range < value_type > R >

unordered_multimap ( std:: from_range_t , R && rg,
size_type bucket_count,
const Allocator & alloc )
: unordered_multimap ( std:: from_range , std:: forward < R > ( rg ) ,

bucket_count, Hash ( ) , key_equal ( ) , alloc ) { }
(17) (начиная с C++23)
template < container-compatible-range < value_type > R >

unordered_multimap ( std:: from_range_t , R && rg,
size_type bucket_count,
const Hash & hash,
const Alloc & alloc )
: unordered_multimap ( std:: from_range , std:: forward < R > ( rg ) ,

bucket_count, hash, key_equal ( ) , alloc ) { }
(18) (начиная с C++23)

Создает новый контейнер из различных источников данных. Опционально использует предоставленное пользователем bucket_count как минимальное количество создаваемых сегментов, hash как хеш-функцию, equal как функцию для сравнения ключей и alloc как аллокатор.

1-5) Создает пустой контейнер. Устанавливает max_load_factor() в значение 1.0 . Для конструктора по умолчанию количество сегментов не определено.
6-8) Конструирует контейнер с содержимым диапазона [ first , last ) . Устанавливает max_load_factor() в значение 1.0 .
9,10) Конструктор копирования. Создает контейнер с копией содержимого other , также копирует коэффициент загрузки, предикат и хэш-функцию. Если alloc не предоставлен, аллокатор получается путем вызова std:: allocator_traits < allocator_type > :: select_on_container_copy_construction ( other. get_allocator ( ) ) .

Параметр шаблона Allocator выводится только из первого аргумента при использовании вывода аргументов шаблона класса .

(начиная с C++23)
11,12) Конструктор перемещения . Создает контейнер с содержимым other с использованием семантики перемещения. Если alloc не предоставлен, аллокатор получается путем перемещения из аллокатора, принадлежащего other .

Параметр шаблона Allocator выводится только из первого аргумента при использовании вывода аргументов шаблона класса .

(начиная с C++23)
13-15) Конструктор со списком инициализации . Создает контейнер с содержимым списка инициализации init , аналогично unordered_multimap ( init. begin ( ) , init. end ( ) ) .
16-18) Конструирует контейнер с содержимым rg .

Содержание

Параметры

alloc - аллокатор для использования во всех выделениях памяти этого контейнера
bucket_count - минимальное количество корзин для использования при инициализации. Если не указано, используется неопределенное значение по умолчанию
hash - хеш-функция для использования
equal - функция сравнения для использования во всех сравнениях ключей этого контейнера
first, last - пара итераторов, определяющая исходный диапазон элементов для копирования
rg - совместимый с контейнером диапазон , то есть input_range , элементы которого конвертируются в value_type
other - другой контейнер, используемый в качестве источника для инициализации элементов контейнера
init - список инициализации для инициализации элементов контейнера
Требования к типам
-
InputIt должен удовлетворять требованиям LegacyInputIterator .

Сложность

1-5) Константа.
6-8) В среднем линейная сложность (т.е. O(N) , где N равно std:: distance ( first, last ) ), в худшем случае квадратичная сложность, т.е. O(N 2 ) .
9,10) Линейно по размеру other .
11,12) Константная. Если alloc задан и alloc ! = other. get_allocator ( ) , то линейная.
13-15) Средний случай O(N) ( N это std:: size ( init ) ), худший случай O(N 2 ) .
16-18) Средний случай O(N) ( N это ranges:: distance ( rg ) ), худший случай O(N 2 ) .

Исключения

Вызовы Allocator::allocate могут генерировать исключения.

Примечания

After container move construction (overload ( 11,12 ) ), references, pointers, and iterators (other than the end iterator) to other remain valid, but refer to elements that are now in * this . The current standard makes this guarantee via the blanket statement in [container.reqmts]/67 , and a more direct guarantee is under consideration via Проблема LWG 2321 .

Хотя формально это не требовалось до C++23, некоторые реализации уже помещали параметр шаблона Allocator в невыводимые контексты в более ранних режимах.

Feature-test макрос Значение Стандарт Функциональность
__cpp_lib_containers_ranges 202202L (C++23) Ориентированная на диапазоны конструкция и вставка; перегрузки ( 16-18 )

Пример

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены ретроактивно к ранее опубликованным стандартам C++.

DR Applied to Behavior as published Correct behavior
LWG 2193 C++11 конструктор по умолчанию ( 1 ) был explicit сделан не-explicit
LWG 2230 C++11 семантика перегрузки ( 13 ) не была определена определена

Смотрите также

присваивает значения контейнеру
(публичная функция-член)