STD::__PROFILE::MULTISET(3cxx)

πŸ“¦
version 9.5.0 Β· 3 versions
, in ubuntu noble

πŸ’– std::__profile::multiset< _Key, _Compare, _Allocator > β€” the class, bestie πŸ’–

okay so. This is the manual page for std::__profile::multiset< _Key, _Compare, _Allocator > over in 3cxx land. It's the Class std::multiset wrapper with performance instrumentation. That's the whole vibe: a multiset that snitches on its own performance to you. Iconic behavior honestly. πŸŽ€


✨ NAME ✨

std::__profile::multiset< _Key, _Compare, _Allocator > β€” Class std::multiset wrapper with performance instrumentation. πŸ‘‘


πŸ¦‹ SYNOPSIS πŸ¦‹

#include <multiset.h>

It Inherits from:

multiset< _Key, std::less< _Key >, std::allocator< _Key > >

and also from:

std::__profile::_Ordered_profile< _Cont >

two parents, main character energy fr fr πŸ’…

🌸 Public Types 🌸

  • typedef _Allocator allocator_type β€” the allocator type, just the _Allocator you handed in.
  • typedef __iterator_tracker< _Base_const_iterator, multiset > const_iterator β€” a const iterator, but it's a lil tracker πŸ‘€.
  • typedef _Base::const_reference const_reference β€” const reference, straight from _Base.
  • typedef std::reverse_iterator< const_iterator > const_reverse_iterator β€” reverse const iterator, built off const_iterator.
  • typedef _Base::difference_type difference_type β€” difference type, courtesy of _Base.
  • typedef __iterator_tracker< _Base_iterator, multiset > iterator β€” the iterator, also a tracker. yes bestie it's watching ✨
  • typedef _Compare key_compare β€” key comparison type.
  • typedef _Key key_type β€” key type, literally just _Key.
  • typedef _Base::reference reference β€” reference, from _Base.
  • typedef std::reverse_iterator< iterator > reverse_iterator β€” reverse iterator, made from iterator.
  • typedef _Base::size_type size_type β€” size type, _Base's.
  • typedef _Compare value_compare β€” value comparison type, same as _Compare.
  • typedef _Key value_type β€” value type, which is _Key.

πŸ’œ Public Member Functions πŸ’œ

  • template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>> multiset (_InputIterator __first, _InputIterator __last, const _Compare &__comp=_Compare(), const _Allocator &__a=_Allocator()) β€” build one from the range __first to __last, with optional __comp and optional allocator __a.
  • template<typename _InputIterator > multiset (_InputIterator __first, _InputIterator __last, const allocator_type &__a) β€” range constructor with an allocator.
  • multiset (const _Base &__x) β€” construct from a _Base.
  • multiset (const _Compare &__comp, const _Allocator &__a=_Allocator()) β€” construct from a comparator, allocator optional.
  • multiset (const allocator_type &__a) β€” just give it an allocator, that's it.
  • multiset (const multiset &)=default β€” copy constructor, defaulted, no drama.
  • multiset (const multiset &__x, const allocator_type &__a) β€” copy __x but use allocator __a.
  • multiset (initializer_list< value_type > __l, const _Compare &__comp=_Compare(), const allocator_type &__a=allocator_type()) β€” construct from an initializer list, comparator and allocator both optional.
  • multiset (initializer_list< value_type > __l, const allocator_type &__a) β€” initializer list plus allocator.
  • multiset (multiset &&)=default β€” move constructor, defaulted. slay.
  • multiset (multiset &&__x, const allocator_type &__a) noexcept(noexcept(_Base(std::move(__x), __a))) β€” move __x with allocator __a, noexcept-ified conditionally.
  • const _Base & _M_base () const noexcept β€” grab the underlying _Base, const flavour.
  • _Base & _M_base () noexcept β€” grab the underlying _Base, non-const flavour.
  • void _M_profile_iterate (int __rewind=0) const β€” profiling bookkeeping for iteration, with a __rewind that defaults to 0.
  • const_iterator begin () const noexcept β€” const iterator to the start.
  • iterator begin () noexcept β€” iterator to the start.
  • const_iterator cbegin () const noexcept β€” const begin, the c-flavoured one.
  • const_iterator cend () const noexcept β€” const end.
  • void clear () noexcept β€” wipe it all out.
  • template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> size_type count (const _Kt &__x) const β€” count how many match __x, transparent-comparator flavour.
  • size_type count (const key_type &__x) const β€” count how many match __x, classic flavour.
  • const_reverse_iterator crbegin () const noexcept β€” const reverse begin.
  • const_reverse_iterator crend () const noexcept β€” const reverse end.
  • template<typename... _Args> iterator emplace (_Args &&... __args) β€” construct in place from __args.
  • template<typename... _Args> iterator emplace_hint (const_iterator __pos, _Args &&... __args) β€” same but with a hint position __pos.
  • const_iterator end () const noexcept β€” const iterator to the end.
  • iterator end () noexcept β€” iterator to the end.
  • template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> std::pair< iterator, iterator > equal_range (const _Kt &__x) β€” the range of matches for __x, transparent flavour, non-const.
  • template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> std::pair< const_iterator, const_iterator > equal_range (const _Kt &__x) const β€” same, const version.
  • std::pair< iterator, iterator > equal_range (const key_type &__x) β€” range of matches for __x, classic, non-const.
  • std::pair< const_iterator, const_iterator > equal_range (const key_type &__x) const β€” classic, const.
  • size_type erase (const key_type &__x) β€” nuke everything matching __x, returns how many went.
  • iterator erase (const_iterator __first, const_iterator __last) β€” nuke the range __first to __last.
  • iterator erase (const_iterator __pos) β€” nuke the one at __pos.
  • template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> iterator find (const _Kt &__x) β€” find __x, transparent flavour, non-const.
  • template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> const_iterator find (const _Kt &__x) const β€” same, const.
  • iterator find (const key_type &__x) β€” find __x, classic, non-const.
  • const_iterator find (const key_type &__x) const β€” classic, const.
  • template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>> void insert (_InputIterator __first, _InputIterator __last) β€” insert the range __first to __last.
  • iterator insert (const value_type &__x) β€” insert __x by const ref.
  • iterator insert (const_iterator __pos, const value_type &__x) β€” insert __x at hint __pos.
  • iterator insert (const_iterator __pos, value_type &&__x) β€” insert a moved __x at hint __pos.
  • void insert (initializer_list< value_type > __l) β€” insert a whole initializer list __l.
  • iterator insert (value_type &&__x) β€” insert a moved __x.
  • template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> iterator lower_bound (const _Kt &__x) β€” first element not less than __x, transparent, non-const.
  • template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> const_iterator lower_bound (const _Kt &__x) const β€” same, const.
  • iterator lower_bound (const key_type &__x) β€” classic lower bound, non-const.
  • const_iterator lower_bound (const key_type &__x) const β€” classic, const.
  • multiset & operator= (const multiset &)=default β€” copy assign, defaulted.
  • multiset & operator= (initializer_list< value_type > __l) β€” assign from initializer list __l.
  • multiset & operator= (multiset &&)=default β€” move assign, defaulted. πŸ’…
  • const_reverse_iterator rbegin () const noexcept β€” const reverse begin.
  • reverse_iterator rbegin () noexcept β€” reverse begin.
  • const_reverse_iterator rend () const noexcept β€” const reverse end.
  • reverse_iterator rend () noexcept β€” reverse end.
  • void swap (multiset &__x) noexcept(/*conditional */) β€” swap with __x; the noexcept is conditional, as the comment says.
  • template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> iterator upper_bound (const _Kt &__x) β€” first element greater than __x, transparent, non-const.
  • template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> const_iterator upper_bound (const _Kt &__x) const β€” same, const.
  • iterator upper_bound (const key_type &__x) β€” classic upper bound, non-const.
  • const_iterator upper_bound (const key_type &__x) const β€” classic, const.

🧚 Protected Member Functions 🧚

  • void _M_profile_construct () noexcept β€” profiling hook for construction.
  • void _M_profile_destruct () noexcept β€” profiling hook for destruction.
  • void _M_swap (_Ordered_profile &__other) β€” swap with another _Ordered_profile.

🌈 Protected Attributes 🌈

  • __gnu_profile::__map2umap_info * _M_map2umap_info β€” a pointer to __gnu_profile::__map2umap_info. that's the lil info holder bestie πŸ’–

🫢 Friends 🫢

  • template<typename _K1 , typename _C1 , typename _A1 > bool operator< (const multiset< _K1, _C1, _A1 > &, const multiset< _K1, _C1, _A1 > &) β€” less-than between two multisets.
  • template<typename _K1 , typename _C1 , typename _A1 > bool operator== (const multiset< _K1, _C1, _A1 > &, const multiset< _K1, _C1, _A1 > &) β€” equality between two multisets.

πŸ”₯ Detailed Description πŸ”₯

template<typename _Key, typename _Compare = std::less<_Key>, typename
    _Allocator = std::allocator<_Key>>
class std::__profile::multiset< _Key, _Compare, _Allocator >

"Class std::multiset wrapper with performance instrumentation.

Definition at line 42 of file profile/multiset.h."

so yeah. It's a std::multiset wrapper. It has performance instrumentation. It lives at line 42 of profile/multiset.h. that's the whole deal and honestly? obsessed. ✨


πŸ’œ Member Typedef Documentation πŸ’œ

Every single one of these is documented for:

template<typename _Key , typename _Compare  = std::less<_Key>, typename
    _Allocator  = std::allocator<_Key>>
  • typedef _Allocator std::__profile::multiset< _Key, _Compare, _Allocator >::allocator_type β€” Definition at line 57 of file profile/multiset.h.
  • typedef __iterator_tracker<_Base_const_iterator, multiset> std::__profile::multiset< _Key, _Compare, _Allocator >::const_iterator β€” Definition at line 64 of file profile/multiset.h.
  • typedef _Base::const_reference std::__profile::multiset< _Key, _Compare, _Allocator >::const_reference β€” Definition at line 59 of file profile/multiset.h.
  • typedef std::reverse_iterator<const_iterator> std::__profile::multiset< _Key, _Compare, _Allocator >::const_reverse_iterator β€” Definition at line 66 of file profile/multiset.h.
  • typedef _Base::difference_type std::__profile::multiset< _Key, _Compare, _Allocator >::difference_type β€” Definition at line 69 of file profile/multiset.h.
  • typedef __iterator_tracker<_Base_iterator, multiset> std::__profile::multiset< _Key, _Compare, _Allocator >::iterator β€” Definition at line 62 of file profile/multiset.h.
  • typedef _Compare std::__profile::multiset< _Key, _Compare, _Allocator >::key_compare β€” Definition at line 55 of file profile/multiset.h.
  • typedef _Key std::__profile::multiset< _Key, _Compare, _Allocator >::key_type β€” Definition at line 53 of file profile/multiset.h.
  • typedef _Base::reference std::__profile::multiset< _Key, _Compare, _Allocator >::reference β€” Definition at line 58 of file profile/multiset.h.
  • typedef std::reverse_iterator<iterator> std::__profile::multiset< _Key, _Compare, _Allocator >::reverse_iterator β€” Definition at line 65 of file profile/multiset.h.
  • typedef _Base::size_type std::__profile::multiset< _Key, _Compare, _Allocator >::size_type β€” Definition at line 68 of file profile/multiset.h.
  • typedef _Compare std::__profile::multiset< _Key, _Compare, _Allocator >::value_compare β€” Definition at line 56 of file profile/multiset.h.
  • typedef _Key std::__profile::multiset< _Key, _Compare, _Allocator >::value_type β€” Definition at line 54 of file profile/multiset.h.
bestie we are NOT done, part 2 is coming, don't go anywhere 🫢✨

πŸ’– Constructor & Destructor Documentation πŸ’–

okay so like, these are all the ways to birth your multiset into existence. each constructor is a different vibe, but they all get you a fresh container. periodt. πŸ’…

  • multiset β€” the one where you bring your own compare and allocator:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> std::__profile::multiset< _Key,
     _Compare, _Allocator >::multiset (const _Compare & __comp, const
     _Allocator & __a = _Allocator()) [inline],  [explicit]

Definition at line 86 of file profile/multiset.h.

  • multiset β€” iterator range edition, with optional compare and allocator:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> template<typename _InputIterator ,
     typename  = std::_RequireInputIter<_InputIterator>>
     std::__profile::multiset< _Key, _Compare, _Allocator >::multiset
     (_InputIterator __first, _InputIterator __last, const _Compare & __comp
     = _Compare(), const _Allocator & __a = _Allocator()) [inline]

Definition at line 96 of file profile/multiset.h.

  • multiset β€” initializer_list glow-up, with compare and allocator defaults:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> std::__profile::multiset< _Key,
     _Compare, _Allocator >::multiset (initializer_list< value_type > __l,
     const _Compare & __comp = _Compare(), const allocator_type & __a =
     allocator_type()) [inline]

Definition at line 102 of file profile/multiset.h.

  • multiset β€” allocator-only constructor, she's explicit:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> std::__profile::multiset< _Key,
     _Compare, _Allocator >::multiset (const allocator_type & __a) [inline],
     [explicit]

Definition at line 108 of file profile/multiset.h.

  • multiset β€” copy construction with a side of allocator:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> std::__profile::multiset< _Key,
     _Compare, _Allocator >::multiset (const multiset< _Key, _Compare,
     _Allocator > & __x, const allocator_type & __a) [inline]

Definition at line 111 of file profile/multiset.h.

  • multiset β€” move construction, also with allocator, and she's noexcept:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> std::__profile::multiset< _Key,
     _Compare, _Allocator >::multiset (multiset< _Key, _Compare, _Allocator >
     && __x, const allocator_type & __a) [inline],  [noexcept]

Definition at line 114 of file profile/multiset.h.

  • multiset β€” initializer_list plus allocator, no compare this time:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> std::__profile::multiset< _Key,
     _Compare, _Allocator >::multiset (initializer_list< value_type > __l,
     const allocator_type & __a) [inline]

Definition at line 118 of file profile/multiset.h.

  • multiset β€” iterator range with allocator, because sometimes you just need the allocator:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> template<typename _InputIterator >
     std::__profile::multiset< _Key, _Compare, _Allocator >::multiset
     (_InputIterator __first, _InputIterator __last, const allocator_type &
     __a) [inline]

Definition at line 122 of file profile/multiset.h.

  • multiset β€” from a _Base, lowkey mysterious but it's there:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> std::__profile::multiset< _Key,
     _Compare, _Allocator >::multiset (const _Base & __x) [inline]

Definition at line 127 of file profile/multiset.h.


πŸ’… Member Function Documentation πŸ’…

now we're in the member function zone, bestie. there are a LOT of them, but we're gonna go through every single one. no skips, no cap. ✨

  • _M_base β€” const flavor, returns const _Base &, and it's noexcept:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> const _Base &
     std::__profile::multiset< _Key, _Compare, _Allocator >::_M_base () const
     [inline],  [noexcept]

Definition at line 564 of file profile/multiset.h.

  • _M_base β€” non-const flavor, returns _Base &, also noexcept:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> _Base & std::__profile::multiset<
     _Key, _Compare, _Allocator >::_M_base () [inline],  [noexcept]

Definition at line 561 of file profile/multiset.h.

  • _M_profile_construct β€” inherited, protected, noexcept, from _Ordered_profile:
template<typename _Cont > void std::__profile::_Ordered_profile< _Cont
     >::_M_profile_construct () [inline],  [protected],  [noexcept],
     [inherited]

Definition at line 75 of file ordered_base.h.

  • _M_profile_destruct β€” inherited, protected, noexcept:
template<typename _Cont > void std::__profile::_Ordered_profile< _Cont
     >::_M_profile_destruct () [inline],  [protected],  [noexcept],
     [inherited]

Definition at line 79 of file ordered_base.h.

  • _M_profile_iterate β€” inherited, takes an int __rewind = 0:
template<typename _Cont > void std::__profile::_Ordered_profile< _Cont
     >::_M_profile_iterate (int __rewind = 0) const [inline],  [inherited]

Definition at line 40 of file ordered_base.h.

  • _M_swap β€” inherited, protected, swaps with another _Ordered_profile:
template<typename _Cont > void std::__profile::_Ordered_profile< _Cont
     >::_M_swap (_Ordered_profile< _Cont > & __other) [inline],  [protected],
     [inherited]

Definition at line 86 of file ordered_base.h.

  • begin β€” const version, noexcept, gives you a const_iterator:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> const_iterator
     std::__profile::multiset< _Key, _Compare, _Allocator >::begin () const
     [inline],  [noexcept]

Definition at line 162 of file profile/multiset.h.

  • begin β€” non-const, noexcept, gives you an iterator:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> iterator std::__profile::multiset<
     _Key, _Compare, _Allocator >::begin () [inline],  [noexcept]

Definition at line 158 of file profile/multiset.h.

  • cbegin β€” const, noexcept, the const iterator start:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> const_iterator
     std::__profile::multiset< _Key, _Compare, _Allocator >::cbegin () const
     [inline],  [noexcept]

Definition at line 175 of file profile/multiset.h.

  • cend β€” const, noexcept, the const iterator end:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> const_iterator
     std::__profile::multiset< _Key, _Compare, _Allocator >::cend () const
     [inline],  [noexcept]

Definition at line 179 of file profile/multiset.h.

  • clear β€” wipes everything, noexcept:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> void std::__profile::multiset< _Key,
     _Compare, _Allocator >::clear () [inline],  [noexcept]

Definition at line 366 of file profile/multiset.h.

  • count β€” transparent overload, takes any _Kt if the compare has is_transparent:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> template<typename _Kt , typename
     _Req  = typename __has_is_transparent<_Compare, _Kt>::type> size_type
     std::__profile::multiset< _Key, _Compare, _Allocator >::count (const _Kt
     & __x) const [inline]

Definition at line 385 of file profile/multiset.h.

  • count β€” classic key_type overload:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> size_type std::__profile::multiset<
     _Key, _Compare, _Allocator >::count (const key_type & __x) const
     [inline]

Definition at line 374 of file profile/multiset.h.

  • crbegin β€” const reverse begin, noexcept:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> const_reverse_iterator
     std::__profile::multiset< _Key, _Compare, _Allocator >::crbegin () const
     [inline],  [noexcept]

Definition at line 213 of file profile/multiset.h.

  • crend β€” const reverse end, noexcept:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> const_reverse_iterator
     std::__profile::multiset< _Key, _Compare, _Allocator >::crend () const
     [inline],  [noexcept]

Definition at line 220 of file profile/multiset.h.

  • emplace β€” perfect forwarding, builds in place:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> template<typename... _Args> iterator
     std::__profile::multiset< _Key, _Compare, _Allocator >::emplace (_Args
     &&... __args) [inline]

Definition at line 239 of file profile/multiset.h.

  • emplace_hint β€” same but with a position hint:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> template<typename... _Args> iterator
     std::__profile::multiset< _Key, _Compare, _Allocator >::emplace_hint
     (const_iterator __pos, _Args &&... __args) [inline]

Definition at line 249 of file profile/multiset.h.

  • end β€” const version, noexcept:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> const_iterator
     std::__profile::multiset< _Key, _Compare, _Allocator >::end () const
     [inline],  [noexcept]

Definition at line 170 of file profile/multiset.h.

  • end β€” non-const, noexcept:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> iterator std::__profile::multiset<
     _Key, _Compare, _Allocator >::end () [inline],  [noexcept]

Definition at line 166 of file profile/multiset.h.

  • equal_range β€” transparent overload, non-const, returns std::pair< iterator, iterator >:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> template<typename _Kt , typename
     _Req  = typename __has_is_transparent<_Compare, _Kt>::type> std::pair<
     iterator, iterator > std::__profile::multiset< _Key, _Compare,
     _Allocator >::equal_range (const _Kt & __x) [inline]

Definition at line 541 of file profile/multiset.h.

  • equal_range β€” transparent overload, const, returns std::pair< const_iterator, const_iterator >:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> template<typename _Kt , typename
     _Req  = typename __has_is_transparent<_Compare, _Kt>::type> std::pair<
     const_iterator, const_iterator > std::__profile::multiset< _Key,
     _Compare, _Allocator >::equal_range (const _Kt & __x) const [inline]

Definition at line 552 of file profile/multiset.h.

  • equal_range β€” key_type overload, non-const:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> std::pair< iterator, iterator >
     std::__profile::multiset< _Key, _Compare, _Allocator >::equal_range
     (const key_type & __x) [inline]

Definition at line 515 of file profile/multiset.h.

  • equal_range β€” key_type overload, const:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> std::pair< const_iterator,
     const_iterator > std::__profile::multiset< _Key, _Compare, _Allocator
     >::equal_range (const key_type & __x) const [inline]

Definition at line 527 of file profile/multiset.h.

  • erase β€” erase by key, returns how many got yeeted:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> size_type std::__profile::multiset<
     _Key, _Compare, _Allocator >::erase (const key_type & __x) [inline]

Definition at line 335 of file profile/multiset.h.

  • erase β€” erase a range [__first, __last):
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> iterator std::__profile::multiset<
     _Key, _Compare, _Allocator >::erase (const_iterator __first,
     const_iterator __last) [inline]

Definition at line 344 of file profile/multiset.h.

  • erase β€” erase a single position:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> iterator std::__profile::multiset<
     _Key, _Compare, _Allocator >::erase (const_iterator __pos) [inline]

Definition at line 320 of file profile/multiset.h.

  • find β€” transparent overload, non-const, returns iterator:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> template<typename _Kt , typename
     _Req  = typename __has_is_transparent<_Compare, _Kt>::type> iterator
     std::__profile::multiset< _Key, _Compare, _Allocator >::find (const _Kt
     & __x) [inline]

Definition at line 414 of file profile/multiset.h.

  • find β€” transparent overload, const, returns const_iterator:
template<typename _Key , typename _Compare  = std::less<_Key>, typename
     _Allocator  = std::allocator<_Key>> template<typename _Kt , typename
     _Req  = typename __has_is_transparent<_Compare, _Kt>::type>
     const_iterator std::__profile::multiset< _Key, _Compare, _Allocator
     >::find (const _Kt & __x) const [inline]

Definition at line 424 of file profile/multiset.h.

Okay so we're still deep in the member-function zone and there are so many left, bestie, hydrate first. πŸ’§ Every single one of these is a member of

template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>

aka std::__profile::multiset< _Key, _Compare, _Allocator >, and yes, the profile-mode wrapper is doing its little bookkeeping dance behind all of them. Also heads up: the ones marked [inline] are defined right in the header, and the ones marked [noexcept] are literally promising they will not throw. Periodt. πŸŽ€


iterator find(const key_type & __x) β€” [inline]

Give it a key __x and it goes looking. Returns a plain iterator. Defined at line 394 of profile/multiset.h.

const_iterator find(const key_type & __x) const β€” [inline]

The const-flavored twin: same search, same __x, but you get a const_iterator back because you promised not to touch anything. Defined at line 403 of profile/multiset.h.


template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>> void insert(_InputIterator __first, _InputIterator __last) β€” [inline]

The range insert! Everything from __first up to (but not including, iykyk) __last gets shoved in. Note the sneaky second template parameter: typename = std::_RequireInputIter<_InputIterator> β€” that's the compiler gatekeeping you into actually passing an input iterator. Returns void, so no bragging rights about where things landed. Defined at line 306 of profile/multiset.h.

iterator insert(const value_type & __x) β€” [inline]

Copy-insert a single __x and get back an iterator pointing at it. Since this is a multiset, duplicates are completely welcome β€” no cap, no rejection. πŸ’… Defined at line 261 of profile/multiset.h.

iterator insert(const_iterator __pos, const value_type & __x) β€” [inline]

The hint version: __pos is your suggestion for where it might go. It's a hint, bestie, not a command β€” the container takes it under advisement. Returns an iterator. Defined at line 277 of profile/multiset.h.

iterator insert(const_iterator __pos, value_type && __x) β€” [inline]

Same hint energy as above, except __x is an rvalue reference, so it can be moved instead of copied. Still hands you back an iterator. Defined at line 289 of profile/multiset.h.

void insert(initializer_list<value_type> __l) β€” [inline]

Brace-init dump: {1, 2, 3} goes in all at once via __l. Returns void because apparently we don't need to know. Defined at line 314 of profile/multiset.h.

iterator insert(value_type && __x) β€” [inline]

Single-value move insert. __x gets moved in, you get an iterator back. Defined at line 269 of profile/multiset.h.


template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> iterator lower_bound(const _Kt & __x) β€” [inline]

The ✨heterogeneous✨ one. _Kt can be a different type than key_type, and it only exists when your _Compare is transparent β€” that's literally what _Req = typename __has_is_transparent<_Compare, _Kt>::type is checking. Gives you the first element that is not less than __x. Returns iterator. Defined at line 453 of profile/multiset.h.

template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> const_iterator lower_bound(const _Kt & __x) const β€” [inline]

Same transparent-type sorcery, but the const flavor, so you get a const_iterator. Defined at line 464 of profile/multiset.h.

iterator lower_bound(const key_type & __x) β€” [inline]

The normal one: plain key_type __x, first element not less than it, iterator out. Defined at line 432 of profile/multiset.h.

const_iterator lower_bound(const key_type & __x) const β€” [inline]

Normal one, const flavor, const_iterator out. Defined at line 441 of profile/multiset.h.


multiset & operator=(initializer_list<value_type> __l) β€” [inline]

Assignment from a braced list __l β€” yes you can just yeet a whole initializer_list<value_type> at it and it returns multiset & so you can chain. Defined at line 147 of profile/multiset.h.


const_reverse_iterator rbegin() const β€” [inline], [noexcept]

Backwards iterator, starting at the last element, const version. Promises [noexcept]. Defined at line 191 of profile/multiset.h.

reverse_iterator rbegin() β€” [inline], [noexcept]

Same but mutable, and also [noexcept]. Defined at line 184 of profile/multiset.h.

const_reverse_iterator rend() const β€” [inline], [noexcept]

The reverse-end sentinel, const flavored, [noexcept]. Defined at line 205 of profile/multiset.h.

reverse_iterator rend() β€” [inline], [noexcept]

Reverse-end sentinel, mutable, [noexcept]. Defined at line 198 of profile/multiset.h.


void swap(multiset< _Key, _Compare, _Allocator > & __x) β€” [inline], [noexcept]

Trade contents with another multiset of the exact same type, __x. Returns void, throws nothing ([noexcept]). Defined at line 228 of profile/multiset.h.


template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> iterator upper_bound(const _Kt & __x) β€” [inline]

Transparent-type upper_bound: first element that is greater than __x, where __x can be a _Kt other than key_type, gated by _Req = typename __has_is_transparent<_Compare, _Kt>::type. Returns iterator. Defined at line 495 of profile/multiset.h.

template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> const_iterator upper_bound(const _Kt & __x) const β€” [inline]

Same transparent magic, const flavor, const_iterator out. Defined at line 506 of profile/multiset.h.

iterator upper_bound(const key_type & __x) β€” [inline]

Normal upper_bound, plain key_type __x, iterator out. Defined at line 473 of profile/multiset.h.

const_iterator upper_bound(const key_type & __x) const β€” [inline]

Normal upper_bound, const flavor, const_iterator out. Defined at line 483 of profile/multiset.h.


πŸ’Ύ Member Data Documentation πŸ’Ύ

template<typename _Cont> __gnu_profile::__map2umap_info* std::__profile::_Ordered_profile< _Cont >::_M_map2umap_info β€” [protected], [inherited]

This one is a protected member of std::__profile::_Ordered_profile< _Cont > (a template<typename _Cont> situation), it's inherited by the things that use it, and it's typed __gnu_profile::__map2umap_info* β€” a pointer, bestie, so don't go dereferencing it in polite company. Defined at line 89 of ordered_base.h.

✍️ Author ✍️

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


And that's a wrap on this absolute unit of a page, babes. 🫢 It's a libstdc++ page (you can see the library and the (3cxx) section hanging off the footer), pulled straight from the source and stamped with its own version and date down there β€” so if you're reading it and the date looks vintage, that's why. Go forth and find something. πŸ‘‘πŸ’–

πŸ“¦ where this page comes from