![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Class template unordered_multisetBoost , The Boost C++ Libraries BoostBook Documentation Subset , Reference
|
Ценность | <Value >должно быть<Erasable >из контейнера (т.е.<allocator_traits >может<destroy >). |
Хэш | Тип объекта унарной функции, который выполняет хеш-функцию для<Value >. Он принимает один аргумент типа<Value >и возвращает значение типа std::size_t. |
Пред | Объект двоичной функции, реализующий отношение эквивалентности по значениям типа<Value >. Объект двоичной функции, индуцирующий отношение эквивалентности на значениях типа<Value >. Он принимает два аргумента типа<Value >и возвращает значение типа bool. |
Аллок | Распределитель, тип значения которого совпадает с типом значения контейнера. |
Элементы организованы в ведра. Ключи с одинаковым хеш-кодом хранятся в одном ведре, а элементы с эквивалентными ключами хранятся рядом друг с другом.
Количество ведер может быть автоматически увеличено путем вызова на вставку или в результате вызова рехэша.
unordered_multiset
public
typestypedeftypenameallocator_type::pointerpointer;
<value_type*
>, если<allocator_type::pointer
>не определен.
typedeftypenameallocator_type::const_pointerconst_pointer;
<boost::pointer_to_other<pointer, value_type>::type
>, если<allocator_type::const_pointer
>не определено.
typedefреализация-определенразмер_тип;
Неподписанный интегральный тип.
размер_тип может представлять любое неотрицательное значение разности_типа.
typedefреализация-определенdifference_type;
Подписанный интегральный тип.
Идентичен разностному типу итератора и const_iterator.
typedefреализация-определенитератор;
постоянный итератор, значением которого является значение_тип.
Категория итератора является, по крайней мере, передним итератором.
Конвертируемый в const_iterator.
typedefреализация-определенconst_iterator;
Постоянный итератор, значением которого является значение_type.
Категория итератора является, по крайней мере, передним итератором.
typedefреализация-определенлокальный_iterator;
Итератор с тем же типом значения, типом разности и указателем и эталонным типом, что и итератор.
Для итерации через одно ведро может использоваться локальный_итератор.
typedefреализация-определенconst_local_iterator;
Постоянный итератор с тем же типом значений, разностным типом и указателем и эталонным типом, что и const_iterator.
Объект const_local_iterator может использоваться для итерации через одно ведро.
If the defaults are used, hasher
, key_equal
and
allocator_type
need to be DefaultConstructible
.
template<typename InputIterator> unordered_multiset(InputIterator f, InputIterator l, 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 and inserts the elements from [f, l) into it.
Требуется: |
If the defaults are used, |
unordered_multiset(unordered_multiset 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_multiset(unordered_multiset &&);
The move constructor.
Примечания: |
This is implemented using Boost.Move. |
Требуется: |
On compilers without rvalue reference support the
emulation does not support moving without calling
|
explicitunordered_multiset(Allocatorconst&a);>
Конструирует пустой контейнер, используя распределитель<a
>
unordered_multiset(unordered_multisetconst&x,Allocatorconst&a);>
Конструирует контейнер, копируя<x
>элементы, хеш-функцию, предикат, максимальный коэффициент нагрузки, но используя распределитель<a
>
[
<3
Примечания:
The destructor is applied to every element, and all memory is deallocated
unordered_multiset& operator=(unordered_multiset const&);
Оператор назначения. Копии содержат элементы, хеш-функцию, предикат и максимальный коэффициент нагрузки, но не распределитель.
Если<Alloc::propagate_on_container_copy_assignment
>существует и<Alloc::propagate_on_container_copy_assignment::value
>истинно, то распределитель перезаписывается, если не скопированные элементы создаются с помощью существующего распределителя.
Требуется: |
< |
unordered_multiset& operator=(unordered_multiset &&);
Оператор переезда.
Если<Alloc::propagate_on_container_move_assignment
>существует и<Alloc::propagate_on_container_move_assignment::value
>истинно, то распределитель перезаписывается, если не движущиеся элементы создаются с помощью существующего распределителя.
Примечания: |
На компиляторах без ссылок на значение r это эмулируется с помощью Boost. Пошли. Обратите внимание, что на некоторых компиляторах оператор присвоения копий может использоваться в некоторых обстоятельствах. |
Требуется: |
< |
allocator_type get_allocator() const;
unordered_multiset
iteratorsiteratorbegin(); const_iteratorbegin()const;>
Возвращение: | Итератор, относящийся к первому элементу контейнера, или если контейнер опорожняет значение прошедшего конца для контейнера. |
iteratorend(); const_iteratorend()const;>
Возвращение: | Итератор, который относится к последнему значению для контейнера. |
const_iteratorcbegin()const;>
Возврат: | Постоянный итератор, относящийся к первому элементу контейнера, или если контейнер опорожняет значение «прошлый конец» для контейнера. |
const_iteratorcend()const;>
Возвращение: | Постоянный итератор, который относится к последнему значению для контейнера. |
unordered_multiset
modifierstemplate<typename... Args> iterator emplace(Args&&... args);
Inserts an object, constructed with the arguments args
, in the container.
Требуется: |
|
Returns: |
An iterator pointing to the inserted element. |
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 |
template<typename... Args> iterator emplace_hint(const_iterator hint, Args&&... args);
Inserts an object, constructed with the arguments args
, in the container.
hint
is a suggestion to where the element should be inserted.
Требуется: |
|
Returns: |
An iterator pointing to the inserted element. |
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 value. 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 |
iterator insert(value_type const& obj);
Inserts obj
in the container.
Требуется: |
|
Returns: |
An iterator pointing to the inserted element. |
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. |
iteratorinsert(value_type&&obj);>
Вставить<obj
>в контейнер.
Требуется: |
|
Returns: |
An iterator pointing to the inserted element. |
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. |
iteratorinsert(const_iteratorhint,value_typeconst&obj);>
Вставляется<obj
>в контейнер.
подсказка - это предложение о том, где элемент должен быть вставлен.
Требуется: [!-- [ORIG_BEGIN]Требуется: Требуется: |
|
Returns: |
An iterator pointing to the inserted element. |
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 value. 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.
hint is a suggestion to where the element should be inserted.
Требуется: |
|
Returns: |
An iterator pointing to the inserted element. |
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 value. 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<typenameInputIterator> voidinsert(InputIteratorfirst,InputIteratorlast);>
В контейнер вставляется ряд элементов. Элементы вставляются тогда и только тогда, когда в контейнере нет элемента с эквивалентным значением.
Требуется: |
|
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. |
iteratorerase(const_iteratorposition);>
Удалите элемент, на который указывает<position
>.
Возврат: | Итератор, следующий за< |
Бросает: | Только бросает исключение, если оно брошено< |
[<3 Примечания: |
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_typeerase(key_typeconst&k);>
Удалите все элементы с ключом, эквивалентным<k
>.
Возврат: | Количество элементов стерто. |
Броски: | Только бросает исключение, если оно брошено< |
iteratorerase(const_iteratorfirst,const_iteratorlast);>
Стирает элементы в диапазоне от<first
>до<last
>.
Возврат: | Итератор, следующий за стертыми элементами — то есть< |
Броски: | Только бросает исключение, если оно брошено< В этой реализации эта перегрузка не вызывает ни одного из методов объекта функции, поэтому это не бросок, но это может быть не так в других реализациях. |
voidquick_erase(const_iteratorposition);>
Удалите элемент, на который указывает<position
>.
Бросок: | Исключение делается только в том случае, если его бросает< . В этой реализации эта перегрузка не вызывает ни одного из методов объекта функции, поэтому это не бросок, но это может быть не так в других реализациях. |
<3 Примечания: |
This method was implemented because returning an iterator to
the next element from |
void erase_return_void(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 |
voidclear();>
Стирает все элементы в контейнере.
Пост-условия: | < |
Броски: | Никогда не делайте исключений. |
voidswap(unordered_multiset&);>
Обменяет содержимое контейнера параметром.
Если<Allocator::propagate_on_container_swap
>объявлено и<Allocator::propagate_on_container_swap::value
>истинно, то распределители контейнеров меняются. В противном случае обмен неравными распределителями приводит к неопределенному поведению.
Броски: | Не выбрасывает исключение, если оно не брошено конструктором копии или оператором присвоения копии< |
<3 Примечания: |
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. |
unordered_multiset
lookupiteratorfind(key_typeconst&k); const_iteratorfind(key_typeconst&k)const; template<typenameCompatibleKey,typenameCompatibleHash, typenameCompatiblePredicate> iteratorfind(CompatibleKeyconst&k,CompatibleHashconst&hash, CompatiblePredicateconst&eq); template<typenameCompatibleKey,typenameCompatibleHash, typenameCompatiblePredicate> const_iterator find(CompatibleKeyconst&k,CompatibleHashconst&hash, CompatiblePredicateconst&eq)const;>
Возвращение: | Итератор, указывающий на элемент с ключом, эквивалентным< |
[<3 Примечания: |
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. |
size_typecount(key_typeconst&k)const;>
Возвращение: | Число элементов с ключом эквивалентно< |
std::pair<iterator,iterator>equal_range(key_typeconst&k); std::pair<const_iterator,const_iterator>equal_range(key_typeconst&k)const;>
Возвращение: | Диапазон, содержащий все элементы с ключом, эквивалентным< |
unordered_multiset
bucket interfacesize_typebucket_count()const;>
Возвращение: | Число ведер. |
size_typemax_bucket_count()const;>
Возвращение: | Верхняя граница числа ведер. |
Требуется:
Требуется:
n < bucket_count()
Returns:
The number of elements in bucket n
.
size_typebucket(key_typeconst&k)const;>
Возвращение: | Индекс ковша, который содержал бы элемент с ключом< |
Последующие условия: | Возвратное значение меньше< |
local_iterator begin(size_type n); const_local_iterator begin(size_type n) const;
Требуется: |
|
Returns: |
A local iterator pointing the first element in the bucket with index |
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_iterator cend(size_type n);
Требуется: |
|
Returns: |
A constant local iterator pointing the 'one past the end' element in the bucket with index |
unordered_multiset
hash policyfloatload_factor()const;>
Возвращение: | Среднее число элементов на ведро. |
floatmax_load_factor()const;>
Возвращение: | Возвращает текущий максимальный коэффициент нагрузки. |
voidmax_load_factor(floatz);>
Эффекты: | Изменяет максимальный коэффициент загрузки контейнера, используя< |
voidrehash(size_typen);>
Изменяет количество ведер так, чтобы было хотя бы<n
>ведер, и чтобы коэффициент нагрузки был меньше максимального коэффициента нагрузки.
Инвалидирует итераторы и изменяет порядок элементов. Указатели и ссылки на элементы не признаются недействительными.
Броски: | Функция не имеет эффекта, если забрасывается исключение, если только оно не забрасывается хеш-функцией контейнера или функцией сравнения. |
voidreserve(size_typen);>
Инвалидирует итераторы и изменяет порядок элементов. Указатели и ссылки на элементы не признаются недействительными.
Броски: | Функция не имеет никакого эффекта, если выбрасывается исключение, если только она не выбрасывается хеш-функцией контейнера или функцией сравнения. |
unordered_multiset
Equality Comparisons.<3
Примечания:
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.
.<3
Примечания:
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.
unordered_multiset
swap<3
Примечания:
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.
Статья Class template unordered_multiset раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
реклама |