![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Class template unordered_mapBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
|
Ключ | Ключ должен бытьСтираемый из контейнера (т.е.черт распределителя можетуничтожить его). |
Карта | Карточка должна бытьСтираемой из контейнера (т.е.черт распределителя можетуничтожить его). |
Хаш | Тип объекта унарной функции, который выполняет хеш-функцию для ключа . Он принимает один аргумент типаКлюч и возвращает значение типа std::size_t. |
Пред | Объект двоичной функции, реализующий отношение эквивалентности по значениям типаКлюч . Объект двоичной функции, индуцирующий отношение эквивалентности по значениям типаКлюч . Он принимает два аргумента типаKey и возвращает значение типа bool. |
Аллок | Распределитель, тип значения которого совпадает с типом значения контейнера. |
Элементы организованы в ведра. Ключи с одинаковым хеш-кодом хранятся в одном ведре.
Количество ведер может быть автоматически увеличено путем вызова на вставку или в результате вызова рехэша.
unordered_map
public
typestypedeftypenameallocator_type::pointerpointer;
value_type*
, еслиallocator_type::pointer
не определен.
typedeftypenameallocator_type::const_pointerconst_pointer;
boost::pointer_to_other
, еслиallocator_type::const_pointer
не определен.
typedefреализация-определенразмер_тип;
Неподписанный интегральный тип.
размер_тип может представлять любое неотрицательное значение разности_тип.
typedefреализация-определенdifference_type;
Подписанный интегральный тип.
Идентичен различному типу итератора и const_iterator.
typedefреализация-определенитератор;
Итератор, типом значения которого является значение_тип.
Категория итератора является, по крайней мере, передним итератором.
Конвертируемый в const_iterator.
typedefреализация-определенconst_iterator;
Постоянный итератор, значением которого является значение_type.
Категория итератора является, по крайней мере, передним итератором.
typedefреализация-определенлокальный_iterator;
Итератор с тем же типом значения, типом разности и указателем и эталонным типом, что и итератор.
Для итерации через одно ведро можно использовать объект local_iterator.
typedefреализация-определенconst_local_iterator;
Постоянный итератор с тем же типом значений, разностным типом и указателем и эталонным типом, что и const_iterator.
Объект const_local_iterator может использоваться для итерации через одно ведро.
unordered_map
public
construct/copy/destructexplicit unordered_map(size_type n = implementation-defined, hasher const& hf = hasher(), key_equal const& eq = key_equal(), allocator_type const& a = allocator_type());
Constructs an empty container with at least n buckets, using hf as the hash function, eq as the key equality predicate, a as the allocator and a maximum load factor of 1.0.
Postconditions: |
size() == 0 |
Требуется: |
If the defaults are used, |
шаблон<имя типа>Итератор ввода,размер_тип,реализация-,[25Конструирует пустой контейнер с, по меньшей мере, n ведер, используя hf в качестве хеш-функции, eq в качестве основного предиката равенства, a в качестве распределителя и максимального коэффициента нагрузки 1,0 и вставляет в него элементы из [f, l].
[ORIG_END] -->
Требования:
Требуется:
If the defaults are used,
hasher
,key_equal
andallocator_type
need to beDefaultConstructible
.
unordered_map(unordered_map const&);
The copy constructor. Copies the contained elements, hash function, predicate, maximum load factor and allocator.
If Allocator::select_on_container_copy_construction
exists and has the right signature, the allocator will be
constructed from its result.
Требуется: |
|
unordered_map(unordered_map &&);
The move constructor.
Примечания: |
This is implemented using Boost.Move. |
Требуется: |
On compilers without rvalue reference support the
emulation does not support moving without calling
|
эксплицитноunordered_mapРаспределительconst&a;
Конструирует пустой контейнер, используя распределительa
unordered_mapunordered_mapconst&x,Allocatorconst&a;
Конструирует контейнер, копируяx
's, содержащий элементы, хеш-функцию, предикат, максимальный коэффициент нагрузки, но используя распределительa
.
~unordered_map;
Примечания: |
The destructor is applied to every element, and all memory is deallocated |
unordered_map& operator=(unordered_map const&);
Оператор назначения. Копии содержат элементы, хеш-функцию, предикат и максимальный коэффициент нагрузки, но не распределитель.
ЕслиAlloc::propagate_on_container_copy_assignment
существует иAlloc::propagate_on_container_copy_assignment::value
верно, распределитель перезаписан, если не скопированные элементы создаются с использованием существующего распределителя.
Требуется: |
|
unordered_map& operator=(unordered_map &&);
Оператор переезда.
ЕслиAlloc::propagate_on_container_move_assignment
существует иAlloc::propagate_on_container_move_assignment::value
истинно, распределитель перезаписан, если не перемещаемые элементы создаются с помощью существующего распределителя.
Примечания: |
На компиляторах без ссылок на значение r это эмулируется с помощью Boost. Пошли. Обратите внимание, что на некоторых компиляторах оператор присвоения копий может использоваться в некоторых обстоятельствах. |
Требуется: |
|
allocator_type get_allocator() const;
unordered_map
size and capacityboolempty]const;
размер_типразмерконст;
size_typemax_sizeconst;
Возврат: |
unordered_map
iterators;const_iterator
Возвращение: | Итератор, который относится к последнему значению для контейнера. |
const_iteratorcbeginconst;
Возвращает: | Постоянный итератор, относящийся к первому элементу контейнера, или если контейнер опорожняет последнее значение для контейнера. |
const_iteratorcendconst;
Возвращение: | Постоянный итератор, который относится к последнему значению для контейнера. |
unordered_map
modifiersшаблон<имя типа...Args>std::пара<итератор,bool>Арг...args
Вставляет объект, построенный с помощью аргументовargs
, в контейнер, если и только если в контейнере нет элемента с эквивалентным ключом.
Требуется: |
|
Returns: |
The bool component of the return type is true if an insert took place. If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. |
Throws: |
If an exception is thrown by an operation other than a call to |
Примечания: |
Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. Pointers and references to elements are never invalidated. If the compiler doesn't support variadic template arguments or rvalue references, this is emulated for up to 10 arguments, with no support for rvalue references or move semantics. Since existing |
шаблон<имя...Арги>итераторemplace_hintconst_iteratorподсказка,Арги&&...args;
Вставляется объект, построенный с помощью аргументовargs
, в контейнер, если и только если в контейнере нет элемента с эквивалентным ключом.
подсказка
является предложением о том, где элемент должен быть вставлен.
Предписания: Требуется: |
|
Returns: |
If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. |
Throws: |
If an exception is thrown by an operation other than a call to |
Примечания: |
The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same key. Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. Pointers and references to elements are never invalidated. If the compiler doesn't support variadic template arguments or rvalue references, this is emulated for up to 10 arguments, with no support for rvalue references or move semantics. Since existing |
std::пара<итератор,bool>вставитьзначение_typeconst&obj;
Вставляетobj
в контейнер, если и только если в контейнере нет элемента с эквивалентным ключом.
Требуется: |
|
Returns: |
The bool component of the return type is true if an insert took place. If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. |
Throws: |
If an exception is thrown by an operation other than a call to |
Примечания: |
Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. Pointers and references to elements are never invalidated. |
std::pair<iterator, bool> insert(value_type&& obj);
Inserts obj
in the container if and only if there is no element in the container with an equivalent key.
Требуется: |
|
Returns: |
The bool component of the return type is true if an insert took place. If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. |
Throws: |
If an exception is thrown by an operation other than a call to |
Примечания: |
Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. Pointers and references to elements are never invalidated. |
iterator insert(const_iterator hint, value_type const& obj);
Inserts obj
in the container if and only if there is no element in the container with an equivalent key.
hint is a suggestion to where the element should be inserted.
Требуется: |
|
Returns: |
If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. |
Throws: |
If an exception is thrown by an operation other than a call to |
Примечания: |
The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same key. Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. Pointers and references to elements are never invalidated. |
iterator insert(const_iterator hint, value_type&& obj);
Inserts obj
in the container if and only if there is no element in the container with an equivalent key.
hint is a suggestion to where the element should be inserted.
Требуется: |
|
Returns: |
If an insert took place, then the iterator points to the newly inserted element. Otherwise, it points to the element with equivalent key. |
Throws: |
If an exception is thrown by an operation other than a call to |
Примечания: |
The standard is fairly vague on the meaning of the hint. But the only practical way to use it, and the only way that Boost.Unordered supports is to point to an existing element with the same key. Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. Pointers and references to elements are never invalidated. |
template<typename InputIterator> void insert(InputIterator first, InputIterator last);
Inserts a range of elements into the container. Elements are inserted if and only if there is no element in the container with an equivalent key.
Требуется: |
|
Throws: |
When inserting a single element, if an exception is thrown by an operation other than a call to |
Примечания: |
Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. Pointers and references to elements are never invalidated. |
итераторстираетположение const_iterator];
Удалите элемент, на который указываетположение
.
Возвращение: | Итератор, следующий за |
Бросает: | Только бросает исключение, если его бросает |
Примечания: |
In older versions this could be inefficient because it had to search through several buckets to find the position of the returned iterator. The data structure has been changed so that this is no longer the case, and the alternative erase methods have been deprecated. |
size_typeerasekey_typeconst&k;
Удалите все элементы с ключом, эквивалентнымk
.
Возвращение: | Число элементов стерто. |
Броски: | Только бросает исключение, если его бросает |
итераторстираетconst_iteratorпервый,const_iteratorпоследний;
Стирает элементы в диапазоне отпервый
допоследний
.
Итератор, следующий за стертыми элементами — т.е. | |
Броски: | Только бросает исключение, если его бросает В этой реализации эта перегрузка не вызывает ни одного из методов объекта функции, поэтому это не бросок, но это может быть не так в других реализациях. |
void quick_erase(const_iterator position);
Erase the element pointed to by position
.
Throws: |
Only throws an exception if it is thrown by In this implementation, this overload doesn't call either function object's methods so it is no throw, but this might not be true in other implementations. |
Примечания: |
This method was implemented because returning an iterator to
the next element from |
voiderase_return_voidconst_iterator;
Удалите элемент, на который указываетположение
.
Броски: | Только бросает исключение, если его бросает В этой реализации эта перегрузка не вызывает ни одного из методов объекта функции, поэтому это не бросок, но это может быть не так в других реализациях. |
Примечания: |
This method was implemented because returning an iterator to
the next element from |
пустотаясно;
Стирает все элементы в контейнере.
Постусловия: |
|
Броски: | Никогда не делайте исключений. |
voidswapunordered_map&];
Заменяет содержимое контейнера параметром.
ЕслиРаспределитель::propagate_on_container_swap
объявляется иРаспределитель::propagate_on_container_swap::value
является истинным, тогда распределители контейнеров меняются. В противном случае обмен неравными распределителями приводит к неопределенному поведению.
Броски: | Не выбрасывает исключение, если оно не выброшено конструктором копий или оператором присвоения копий ключа |
Примечания: |
The exception specifications aren't quite the same as the C++11 standard, as the equality predieate and hash function are swapped using their copy constructors. |
Примечания:
The templated overloads are a non-standard extensions which allows you to use a compatible hash function and equality predicate for a key of a different type in order to avoid an expensive type cast. In general, its use is not encouraged.
размер_типграфключ_типconst&k]const;
Возвращение: | Число элементов с ключом, эквивалентным |
итераторитераторитераторитераторитераторитераторитераторитераторитераторитераторитераторитераторитераторитераторитераторитератор Диапазон, содержащий все элементы с ключом, эквивалентнымk
. Если контейнер не содержит таких элементов, возвращаетstd:::make_pair(b.end(),b.end())
mapped_type& operator[](key_type const& k);
Effects: |
If the container does not already contain an elements with a key equivalent to |
Returns: |
A reference to |
Throws: |
If an exception is thrown by an operation other than a call to |
Примечания: |
Can invalidate iterators, but only if the insert causes the load factor to be greater to or equal to the maximum load factor. Pointers and references to elements are never invalidated. |
&ключ_тип&k]k]const&]
Возвращение:
Ссылка наx. Second
, гдеx
является (уникальным) элементом, ключ которого эквивалентенk
.
Броски:
Исключительный объект типаstd::out_of_range
, если такой элемент отсутствует.
unordered_map
bucket interfacesize_typebucket_countconst;
Возвращение: | Количество ведер. |
size_typemax_bucket_countconst
Возвращение: | Верхняя граница по количеству ведер. |
size_type bucket_size(size_type n) const;
Требуется: |
|
Returns: |
The number of elements in bucket |
size_typebucketkey_typeconst&k]const;
Возвращение: | Индекс ведра, который содержал бы элемент с ключом |
Последующие условия: | Обратная стоимость меньше |
начинаютразмер_типn];const_local_iteratorначинаютразмер_типразмер_типконст[ORIG_END] -->[!-- [ORIG_BEGIN]
Требует:
Требует:Требуется:
n
shall be in the range[0, bucket_count())
.Returns:
A local iterator pointing the first element in the bucket with index
n
.
local_iterator end(size_type n); const_local_iterator end(size_type n) const;
Требуется: |
|
Returns: |
A local iterator pointing the 'one past the end' element in the bucket with index |
const_local_iterator cbegin(size_type n) const;
Требуется: |
|
Returns: |
A constant local iterator pointing the first element in the bucket with index |
const_local_iteratorcendsize_typen;
Требуется: |
|
Returns: |
A constant local iterator pointing the 'one past the end' element in the bucket with index |
unordered_map
hash policyплаватьload_factorконст;
Возвращение:
Среднее число элементов на ведро.
плаватьmax_load_factor]конст;
Возвращение: | Возвращает текущий максимальный коэффициент нагрузки. |
voidmax_load_factorfloatz;
Эффекты: | Изменяет максимальный коэффициент загрузки контейнера, используя |
voidrehashsize_typen;
Изменяет количество ведер таким образом, чтобы было не менееn
ведер, и чтобы коэффициент нагрузки был меньше максимального коэффициента нагрузки.
Инвалидирует итераторы и изменяет порядок элементов. Указатели и ссылки на элементы не признаются недействительными.
Броски: | Функция не имеет эффекта, если забрасывается исключение, если только оно не забрасывается хеш-функцией контейнера или функцией сравнения. |
voidreservesize_typen;
Инвалидирует итераторы и изменяет порядок элементов. Указатели и ссылки на элементы не являются недействительными.
Броски: | Функция не имеет эффекта, если забрасывается исключение, если только оно не забрасывается хеш-функцией контейнера или функцией сравнения. |
unordered_map
Equality Comparisonsшаблон[шаблон][название][название][название][название][23Примечания:
The behavior of this function was changed to match the C++11 standard in Boost 1.48.
Behavior is undefined if the two containers don't have equivalent equality predicates.
template<typename Key, typename Mapped, typename Hash, typename Pred, typename Alloc> bool operator!=(unordered_map<Key, Mapped, Hash, Pred, Alloc> const& x, unordered_map<Key, Mapped, Hash, Pred, Alloc> const& y);
Return false
if x.size() ==
y.size
and for every element in x
,
there is an element in y
with the same
for the same key, with an equal value (using
operator==
to compare the value types).
Примечания: |
The behavior of this function was changed to match the C++11 standard in Boost 1.48. Behavior is undefined if the two containers don't have equivalent equality predicates. |
Статья Class template unordered_map раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |