STD::__DEBUG::UNORDERED_MULTISET(3)

πŸ’– std::__debug::unordered_multiset< _Value, _Hash, _Pred, _Alloc > πŸ’–

okay bestie, you've landed in the Library Functions Manual section, and this page is specifically about the debug version of std::unordered_multiset β€” like, the same container you already know and love, but wearing a little safety vest. 🦺✨


🌸 NAME 🌸

std::__debug::unordered_multiset< _Value, _Hash, _Pred, _Alloc > β€” a Class, and it's literally std::unordered_multiset with safety/checking/debug instrumentation on top. no cap, that's the whole vibe. πŸ’…


✨ SYNOPSIS ✨

#include <unordered_set>

Inherits from: __gnu_debug::_Safe_container< _SafeContainer, _Alloc, _SafeBase, _IsCxx11AllocatorAware > β€” so like, all that safe-container energy is inherited, periodt.


πŸŽ€ Public Types πŸŽ€

not me listing every single one, but bestie they all matter:

  • typedef _Base::allocator_type allocator_type β€” the allocator type, straight from _Base. 🫢
  • typedef __gnu_debug::_Safe_iterator< _Base_const_iterator, unordered_multiset > const_iterator β€” const iterator, but the safe/debug kind. ✨
  • typedef __gnu_debug::_Safe_local_iterator< _Base_const_local_iterator, unordered_multiset > const_local_iterator β€” the const local iterator, also safety-instrumented.
  • typedef _Base::const_pointer const_pointer β€” const pointer, inherited from _Base.
  • typedef _Base::const_reference const_reference β€” const reference, also from _Base.
  • typedef _Base::difference_type difference_type β€” difference type, _Base's own.
  • typedef _Base::hasher hasher β€” the hasher type. yes queen, hashing.
  • typedef __gnu_debug::_Safe_iterator< _Base_iterator, unordered_multiset > iterator β€” the main-character iterator, safe flavour. πŸ‘‘
  • typedef _Base::key_equal key_equal β€” key equality predicate type.
  • typedef _Base::key_type key_type β€” the key type.
  • typedef __gnu_debug::_Safe_local_iterator< _Base_local_iterator, unordered_multiset > local_iterator β€” local iterator with the debug instrumentation. πŸ”₯
  • typedef _Base::pointer pointer β€” pointer, from _Base.
  • typedef _Base::reference reference β€” reference, from _Base.
  • typedef _Base::size_type size_type β€” size type, from _Base.
  • typedef _Base::value_type value_type β€” value type, from _Base.

πŸ‘‘ Public Member Functions πŸ‘‘

bestie there are SO many constructors. buckle up, we're going through every single one, fr fr:

  • unordered_multiset (_Base_ref __x) β€” takes a _Base_ref __x.
  • template<typename _InputIterator> unordered_multiset (_InputIterator __first, _InputIterator __last, const allocator_type &__a) β€” range-y constructor, first to last, plus an allocator.
  • template<typename _InputIterator> unordered_multiset (_InputIterator __first, _InputIterator __last, size_type __n, const allocator_type &__a) β€” same range energy, now with size_type __n in the mix too.
  • template<typename _InputIterator> unordered_multiset (_InputIterator __first, _InputIterator __last, size_type __n, const hasher &__hf, const allocator_type &__a) β€” range, __n, a hasher __hf, and an allocator. the whole squad. πŸ’–
  • template<typename _InputIterator> unordered_multiset (_InputIterator __first, _InputIterator __last, size_type __n=0, const hasher &__hf=hasher(), const key_equal &__eql=key_equal(), const allocator_type &__a=allocator_type()) β€” the fully-loaded range constructor, with defaults on literally everything after the iterators.
  • unordered_multiset (const allocator_type &__a) β€” allocator-only constructor.
  • unordered_multiset (const unordered_multiset &)=default β€” copy constructor, =default. iconic.
  • unordered_multiset (const unordered_multiset &__uset, const allocator_type &__a) β€” copy from __uset, but with your own allocator.
  • unordered_multiset (initializer_list< value_type > __l, const allocator_type &__a) β€” from an initializer_list< value_type > __l plus an allocator.
  • unordered_multiset (initializer_list< value_type > __l, size_type __n, const allocator_type &__a) β€” the initializer list, __n, and an allocator.
  • unordered_multiset (initializer_list< value_type > __l, size_type __n, const hasher &__hf, const allocator_type &__a) β€” init list, __n, hasher, allocator. all four, slay.
  • unordered_multiset (initializer_list< value_type > __l, size_type __n=0, const hasher &__hf=hasher(), const key_equal &__eql=key_equal(), const allocator_type &__a=allocator_type()) β€” the deluxe init-list constructor, defaults everywhere.
  • unordered_multiset (size_type __n, const allocator_type &__a) β€” sized, with an allocator.
  • unordered_multiset (size_type __n, const hasher &__hf, const allocator_type &__a) β€” sized, hasher, allocator.
  • unordered_multiset (size_type __n, const hasher &__hf=hasher(), const key_equal &__eql=key_equal(), const allocator_type &__a=allocator_type()) β€” sized, with all the defaults doing their thing.
  • unordered_multiset (unordered_multiset &&)=default β€” move constructor, =default. πŸ¦‹
  • unordered_multiset (unordered_multiset &&__uset, const allocator_type &__a) noexcept(noexcept(_Base(std::move(__uset), __a))) β€” move with an allocator, and yes that noexcept spec is exactly what it says.

and now the actual member functions, no skips, we don't do that here:

  • const _Base & _M_base () const noexcept β€” hands you the _Base back, const and noexcept.
  • _Base & _M_base () noexcept β€” the non-const one.
  • const_iterator begin () const noexcept β€” const begin, noexcept.
  • iterator begin () noexcept β€” begin, noexcept.
  • local_iterator begin (size_type __b) β€” local begin for bucket __b.
  • const_local_iterator begin (size_type __b) const β€” const local begin for bucket __b.
  • size_type bucket_size (size_type __b) const β€” bucket size for bucket __b.
  • const_iterator cbegin () const noexcept β€” cbegin, const, noexcept.
  • const_local_iterator cbegin (size_type __b) const β€” const local cbegin for bucket __b.
  • const_iterator cend () const noexcept β€” cend, const, noexcept.
  • const_local_iterator cend (size_type __b) const β€” const local cend for bucket __b.
  • void clear () noexcept β€” clear, and it's noexcept. 🧚
  • template<typename... _Args> iterator emplace (_Args &&... __args) β€” variadic emplace, forwards __args.
  • template<typename... _Args> iterator emplace_hint (const_iterator __hint, _Args &&... __args) β€” emplace with a __hint up front.
  • const_iterator end () const noexcept β€” const end, noexcept.
  • iterator end () noexcept β€” end, noexcept.
  • local_iterator end (size_type __b) β€” local end for bucket __b.
  • const_local_iterator end (size_type __b) const β€” const local end for bucket __b.
  • std::pair< iterator, iterator > equal_range (const key_type &__key) β€” equal_range on __key, gives you a pair of iterators.
  • std::pair< const_iterator, const_iterator > equal_range (const key_type &__key) const β€” the const version, pair of const iterators.
  • _Base_iterator erase (_Base_const_iterator __it) β€” erase at __it, returns a _Base_iterator.
  • template<__heterogeneous_hash_key< unordered_multiset > _Kt> size_type erase (_Kt &&__key) β€” the templated heterogeneous-key erase, returns a size_type.
  • size_type erase (const key_type &__key) β€” erase by __key, returns a size_type.
  • iterator erase (const_iterator __first, const_iterator __last) β€” erase the range __first to __last.
  • iterator erase (const_iterator __it) β€” erase at a const_iterator.
  • iterator erase (iterator __it) β€” erase at a plain iterator.
  • iterator find (const key_type &__key) β€” find your __key.
  • const_iterator find (const key_type &__key) const β€” const find your __key.
  • template<typename _InputIterator> void insert (_InputIterator __first, _InputIterator __last) β€” range insert, __first to __last.
  • iterator insert (const value_type &__obj) β€” insert __obj, get an iterator back.
  • iterator insert (const_iterator __hint, const value_type &__obj) β€” insert __obj with a __hint.
  • iterator insert (const_iterator __hint, value_type &&__obj) β€” same but __obj is an rvalue ref. πŸ”₯
  • void insert (std::initializer_list< value_type > __l) β€” insert a whole initializer_list< value_type > __l.
  • iterator insert (value_type &&__obj) β€” rvalue __obj, iterator back.
  • float max_load_factor () const noexcept β€” get the max load factor, noexcept.
  • void max_load_factor (float __f) β€” set the max load factor to __f.
  • unordered_multiset & operator= (const unordered_multiset &)=default β€” copy assignment, =default.
  • unordered_multiset & operator= (initializer_list< value_type > __l) β€” assign from an initializer_list< value_type > __l.
  • unordered_multiset & operator= (unordered_multiset &&)=default β€” move assignment, =default.
  • void swap (unordered_multiset &__x) noexcept(noexcept(declval< _Base & >().swap(__x))) β€” swap with __x, with that very specific noexcept clause. πŸ’€

πŸ›‘οΈ Protected Member Functions πŸ›‘οΈ

  • constexpr void _M_swap (const _Safe_container &__x) const noexcept β€” protected, constexpr, const, noexcept. the whole rΓ©sumΓ©. ✨

🫢 Friends 🫢

  • template<typename _ItT, typename _SeqT, typename _CatT> class ::__gnu_debug::_Safe_iterator
  • template<typename _ItT, typename _SeqT> class ::__gnu_debug::_Safe_local_iterator

πŸ”₯ Detailed Description πŸ”₯

template<typename _Value, typename _Hash = std::hash<_Value>, typename _Pred = std::equal_to<_Value>, typename _Alloc = std::allocator<_Value>>
class std::__debug::unordered_multiset< _Value, _Hash, _Pred, _Alloc >
"Class std::unordered_multiset with safety/checking/debug instrumentation."

like, that's the whole point of this thing bestie β€” same container, but with the safety, checking and debug instrumentation turned all the way up. πŸ’…


πŸ“š Author πŸ“š

Generated automatically by Doxygen for libstdc++ from the source code. so not a human, just a lil robot doing its thing. πŸ€–


okay that's the whole page!! πŸŽ€ this was brought to you by libstdc++, and it's the std::__deb..., _Alloc >(3) page β€” mwah, go forth and debug safely bestie πŸ’–βœ¨πŸ¦‹

πŸ“¦ where this page comes from
  • arch rolling: gcc 16.2.1+r23+gd564253eb6c8-1 Β· GPL-3.0-or-later WITH GCC-exception-3.1 AND GFDL-1.3-or-later
  • fedora 44: libstdc++-docs 16.2.1-2.fc44
  • fedora 44: libstdc++-docs 16.2.1-3.fc44 Β· GPL-3.0-or-later AND LGPL-3.0-or-later AND (GPL-3.0-or-later WITH GCC-exception-3.1) AND (GPL-3.0-or-later WITH Texinfo-exception) AND (LGPL-2.1-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GCC-exception-2.0) AND (GPL-2.0-or-later WITH GNU-compiler-exception) AND BSL-1.0 AND GFDL-1.3-or-later AND Linux-man-pages-copyleft-2-para AND SunPro AND BSD-1-Clause AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND BSD-4-Clause AND BSD-Source-Code AND Zlib AND MIT AND Apache-2.0 AND (Apache-2.0 WITH LLVM-Exception) AND ZPL-2.1 AND ISC AND LicenseRef-Fedora-Public-Domain AND HP-1986 AND curl AND Martin-Birgmeier AND HPND-Markus-Kuhn AND dtoa AND SMLNJ AND AMD-newlib AND OAR AND HPND-merchantability-variant AND HPND-Intel
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms