STD::__PROFILE::MULTISET(3cxx)
π 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_Allocatoryou 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 offconst_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 fromiterator.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__firstto__last, with optional__compand 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__xbut 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__xwith 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__rewindthat defaults to0.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__firstto__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__firstto__last.iterator insert (const value_type &__x)β insert__xby const ref.iterator insert (const_iterator __pos, const value_type &__x)β insert__xat hint__pos.iterator insert (const_iterator __pos, value_type &&__x)β insert a moved__xat 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 fileprofile/multiset.h.typedef __iterator_tracker<_Base_const_iterator, multiset> std::__profile::multiset< _Key, _Compare, _Allocator >::const_iteratorβ Definition at line 64 of fileprofile/multiset.h.typedef _Base::const_reference std::__profile::multiset< _Key, _Compare, _Allocator >::const_referenceβ Definition at line 59 of fileprofile/multiset.h.typedef std::reverse_iterator<const_iterator> std::__profile::multiset< _Key, _Compare, _Allocator >::const_reverse_iteratorβ Definition at line 66 of fileprofile/multiset.h.typedef _Base::difference_type std::__profile::multiset< _Key, _Compare, _Allocator >::difference_typeβ Definition at line 69 of fileprofile/multiset.h.typedef __iterator_tracker<_Base_iterator, multiset> std::__profile::multiset< _Key, _Compare, _Allocator >::iteratorβ Definition at line 62 of fileprofile/multiset.h.typedef _Compare std::__profile::multiset< _Key, _Compare, _Allocator >::key_compareβ Definition at line 55 of fileprofile/multiset.h.typedef _Key std::__profile::multiset< _Key, _Compare, _Allocator >::key_typeβ Definition at line 53 of fileprofile/multiset.h.typedef _Base::reference std::__profile::multiset< _Key, _Compare, _Allocator >::referenceβ Definition at line 58 of fileprofile/multiset.h.typedef std::reverse_iterator<iterator> std::__profile::multiset< _Key, _Compare, _Allocator >::reverse_iteratorβ Definition at line 65 of fileprofile/multiset.h.typedef _Base::size_type std::__profile::multiset< _Key, _Compare, _Allocator >::size_typeβ Definition at line 68 of fileprofile/multiset.h.typedef _Compare std::__profile::multiset< _Key, _Compare, _Allocator >::value_compareβ Definition at line 56 of fileprofile/multiset.h.typedef _Key std::__profile::multiset< _Key, _Compare, _Allocator >::value_typeβ Definition at line 54 of fileprofile/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'snoexcept:
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, returnsconst _Base &, and it'snoexcept:
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 &, alsonoexcept:
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 anint __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 aconst_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 aniterator:
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_Ktif the compare hasis_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, returnsstd::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, returnsstd::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, returnsiterator:
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, returnsconst_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
- ubuntu noble: libstdc++-9-doc 9.5.0-6ubuntu2
- ubuntu noble: libstdc++-9-doc 9.5.0-6ubuntu2.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms