STD::__PROFILE::SET(3cxx)
πΈ std::__profile::set< _Key, _Compare, _Allocator > β the 3cxx manual, bestie edition πΈ
okay so you opened the 3cxx page for this one and it's a LOT, so we're doing it in parts. this is part 1. grab a snack, hydrate, we're going in π
β¨ NAME β¨
std::__profile::set< _Key, _Compare, _Allocator > β it's a Class std::set wrapper with performance instrumentation. like, a set but it's keeping receipts on how you use it π
π¦ SYNOPSIS π¦
#include <set.h>
Inherits set< _Key, std::less< _Key >, std::allocator< _Key > >, and std::__profile::_Ordered_profile< _Cont >.
the way it's out here collecting TWO whole parents, main character energy fr π
π Public Types
const_iteratorβtypedef __iterator_tracker< _Base_const_iterator, set > const_iteratorconst_referenceβtypedef _Base::const_reference const_referenceconst_reverse_iteratorβtypedef std::reverse_iterator< const_iterator > const_reverse_iteratordifference_typeβtypedef _Base::difference_type difference_typeiteratorβtypedef __iterator_tracker< _Base_iterator, set > iteratorkey_compareβtypedef _Compare key_comparekey_typeβtypedef _Key key_typereferenceβtypedef _Base::reference referencereverse_iteratorβtypedef std::reverse_iterator< iterator > reverse_iteratorsize_typeβtypedef _Base::size_type size_typevalue_compareβtypedef _Compare value_comparevalue_typeβtypedef _Key value_type
twelve typedefs, all slaying in their own lane π
π Public Member Functions π
okay this is the long part. deep breath. every single one is here, no cap, not skipping a single one of them.
template<typename _InputIterator > set (_InputIterator __first, _InputIterator __last, const _Allocator &__a)template<typename _InputIterator , typename = std::_RequireInputIter<_InputIterator>> set (_InputIterator __first, _InputIterator __last, const _Compare &__comp=_Compare(), const _Allocator &__a=_Allocator())set (const _Allocator &__a)set (const _Base &__x)set (const _Compare &__comp, const _Allocator &__a=_Allocator())set (const set &)=defaultset (const set &__x, const _Allocator &__a)set (initializer_list< value_type > __l, const _Allocator &__a)set (initializer_list< value_type > __l, const _Compare &__comp=_Compare(), const _Allocator &__a=_Allocator())set (set &&)=defaultset (set &&__x, const _Allocator &__a)β and it'snoexcept(noexcept(_Base(std::move(__x), __a))), so it will literally tell you if it's gonna throw π«Άconst _Base & _M_base () const noexcept_Base & _M_base () noexceptvoid _M_profile_iterate (int __rewind=0) constconst_iterator begin () const noexceptiterator begin () noexceptconst_iterator cbegin () const noexceptconst_iterator cend () const noexceptvoid clear () noexcepttemplate<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> size_type count (const _Kt &__x) constsize_type count (const key_type &__x) constconst_reverse_iterator crbegin () const noexceptconst_reverse_iterator crend () const noexcepttemplate<typename... _Args> std::pair< iterator, bool > emplace (_Args &&... __args)template<typename... _Args> iterator emplace_hint (const_iterator __pos, _Args &&... __args)const_iterator end () const noexceptiterator end () noexcepttemplate<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> std::pair< iterator, iterator > equal_range (const _Kt &__x)template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> std::pair< const_iterator, const_iterator > equal_range (const _Kt &__x) conststd::pair< iterator, iterator > equal_range (const key_type &__x)std::pair< const_iterator, const_iterator > equal_range (const key_type &__x) constsize_type erase (const key_type &__x)iterator erase (const_iterator __first, const_iterator __last)iterator erase (const_iterator __pos)template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> iterator find (const _Kt &__x)template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> const_iterator find (const _Kt &__x) constiterator find (const key_type &__x)const_iterator find (const key_type &__x) consttemplate<typename _InputIterator > void insert (_InputIterator __first, _InputIterator __last)std::pair< iterator, bool > insert (const value_type &__x)iterator insert (const_iterator __pos, const value_type &__x)iterator insert (const_iterator __pos, value_type &&__x)void insert (initializer_list< value_type > __l)std::pair< iterator, bool > insert (value_type &&__x)template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> iterator lower_bound (const _Kt &__x)template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> const_iterator lower_bound (const _Kt &__x) constiterator lower_bound (const key_type &__x)const_iterator lower_bound (const key_type &__x) constset & operator= (const set &)=defaultset & operator= (initializer_list< value_type > __l)set & operator= (set &&)=defaultconst_reverse_iterator rbegin () const noexceptreverse_iterator rbegin () noexceptconst_reverse_iterator rend () const noexceptreverse_iterator rend () noexceptvoid swap (set &__x) noexcept(/*conditional */)template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> iterator upper_bound (const _Kt &__x)template<typename _Kt , typename _Req = typename __has_is_transparent<_Compare, _Kt>::type> const_iterator upper_bound (const _Kt &__x) constiterator upper_bound (const key_type &__x)const_iterator upper_bound (const key_type &__x) const
not me listing sixty whole member functions and then having the audacity to say "and that's the easy part" π
π§ Protected Member Functions π§
void _M_profile_construct () noexceptvoid _M_profile_destruct () noexceptvoid _M_swap (_Ordered_profile &__other)
the backstage crew, the ones doing the actual β¨instrumentationβ¨ work, we love them
π Protected Attributes π
__gnu_profile::__map2umap_info * _M_map2umap_info
one (1) protected attribute and it is literally a pointer named _M_map2umap_info. iconic, no notes π
π Friends π
template<typename _K1 , typename _C1 , typename _A1 > bool operator< (const set< _K1, _C1, _A1 > &, const set< _K1, _C1, _A1 > &)template<typename _K1 , typename _C1 , typename _A1 > bool operator== (const set< _K1, _C1, _A1 > &, const set< _K1, _C1, _A1 > &)
only two friends and both of them are comparison operators. a very small, very exclusive group chat π«Ά
π Detailed Description π
so the whole class is basically this:
template<typename _Key, typename _Compare = std::less<_Key>, typename
_Allocator = std::allocator<_Key>>
class std::__profile::set< _Key, _Compare, _Allocator >
and the vibe is exactly: "Class std::set wrapper with performance instrumentation."
Definition at line 42 of file profile/set.h.
line 42 bestie. that's where the magic starts π₯
π Member Typedef Documentation π
here's every single typedef again but now with its β¨receiptsβ¨ β meaning the exact file and line where it lives. because apparently we do documentation TWICE in this fandom.
typedef __iterator_tracker<_Base_const_iterator, set> std::__profile::set< _Key, _Compare, _Allocator >::const_iteratorβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 62 of fileprofile/set.h.typedef _Base::const_reference std::__profile::set< _Key, _Compare, _Allocator >::const_referenceβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 58 of fileprofile/set.h.typedef std::reverse_iterator<const_iterator> std::__profile::set< _Key, _Compare, _Allocator >::const_reverse_iteratorβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 64 of fileprofile/set.h.typedef _Base::difference_type std::__profile::set< _Key, _Compare, _Allocator >::difference_typeβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 67 of fileprofile/set.h.typedef __iterator_tracker<_Base_iterator, set> std::__profile::set< _Key, _Compare, _Allocator >::iteratorβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 60 of fileprofile/set.h.typedef _Compare std::__profile::set< _Key, _Compare, _Allocator >::key_compareβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 55 of fileprofile/set.h.typedef _Key std::__profile::set< _Key, _Compare, _Allocator >::key_typeβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 53 of fileprofile/set.h.typedef _Base::reference std::__profile::set< _Key, _Compare, _Allocator >::referenceβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 57 of fileprofile/set.h.typedef std::reverse_iterator<iterator> std::__profile::set< _Key, _Compare, _Allocator >::reverse_iteratorβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 63 of fileprofile/set.h.typedef _Base::size_type std::__profile::set< _Key, _Compare, _Allocator >::size_typeβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 66 of fileprofile/set.h.typedef _Compare std::__profile::set< _Key, _Compare, _Allocator >::value_compareβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 56 of fileprofile/set.h.typedef _Key std::__profile::set< _Key, _Compare, _Allocator >::value_typeβ fortemplate<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>β Definition at line 54 of fileprofile/set.h.
okay that's the typedef wall done and honestly? ate. part 2 incoming, don't go anywhere π β¨
β¨ CONSTRUCTOR & DESTRUCTOR DOCUMENTATION β¨
okay bestie, deep breath π this is the part where we meet all the ways you can bring a std::__profile::set into existence. every single one of them is a member of the class template
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
std::__profile::set<_Key, _Compare, _Allocator>
so like, keep that in your head and we're golden π«Ά
setβ the "gimme a comparator and maybe an allocator" one π
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
std::__profile::set<_Key, _Compare, _Allocator>::set(const _Compare & __comp, const _Allocator & __a = _Allocator())
it's [inline] and [explicit] β so no sneaky implicit conversions trying to slide in, periodt π
__a defaults to a fresh _Allocator(), so if you don't care about allocators (and honestly, most of us don't) you can just hand it the comparator and dip.
Definition at line 83 of file profile/set.h.
setβ the iterator-range one, with comparator and allocator πΈ
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
template<typename _InputIterator, typename = std::_RequireInputIter<_InputIterator>>
std::__profile::set<_Key, _Compare, _Allocator>::set(_InputIterator __first, _InputIterator __last, const _Compare & __comp = _Compare(), const _Allocator & __a = _Allocator())
yes bestie, that second template param is the whole typename = std::_RequireInputIter<_InputIterator> gate β it keeps the compiler from grabbing this overload for stuff that isn't actually an input iterator π [inline], __comp defaults to _Compare(), __a defaults to _Allocator().
Definition at line 93 of file profile/set.h.
setβ initializer_list girlie with a comparator and allocator π
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
std::__profile::set<_Key, _Compare, _Allocator>::set(initializer_list<value_type> __l, const _Compare & __comp = _Compare(), const _Allocator & __a = _Allocator())
[inline], defaults on both __comp and __a. braces go in, set comes out. iconic β¨
Definition at line 99 of file profile/set.h.
setβ allocator-only, and yes it'sexplicitπ
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
std::__profile::set<_Key, _Compare, _Allocator>::set(const _Allocator & __a)
[inline], [explicit] β one argument, zero implicit-conversion nonsense allowed π
Definition at line 105 of file profile/set.h.
setβ copy constructor, but make it allocator-flavoured π¦
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
std::__profile::set<_Key, _Compare, _Allocator>::set(const set<_Key, _Compare, _Allocator> & __x, const _Allocator & __a)
you copy __x and you tell it which __a to live in. [inline], no defaults here, both args are required, no cap π§
Definition at line 108 of file profile/set.h.
setβ the move one, and it's lowkey the chillest of the bunch π
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
std::__profile::set<_Key, _Compare, _Allocator>::set(set<_Key, _Compare, _Allocator> && __x, const _Allocator & __a)
[inline] and [noexcept] β it literally promises not to throw. main character energy fr fr π
Definition at line 111 of file profile/set.h.
setβ initializer_list, allocator only π
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
std::__profile::set<_Key, _Compare, _Allocator>::set(initializer_list<value_type> __l, const _Allocator & __a)
[inline], __l plus __a, that's the whole vibe π
Definition at line 115 of file profile/set.h.
setβ iterator range, allocator only, single template param this time π
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
template<typename _InputIterator>
std::__profile::set<_Key, _Compare, _Allocator>::set(_InputIterator __first, _InputIterator __last, const _Allocator & __a)
[inline], no _RequireInputIter guard on this one, just you, __first, __last and __a π«Ά
Definition at line 119 of file profile/set.h.
setβ the_Baseone, aka the behind-the-scenes bestie π
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
std::__profile::set<_Key, _Compare, _Allocator>::set(const _Base & __x)
[inline], takes a const _Base & and that's it, no extra params, no notes. it's giving "internal plumbing, don't worry about it" π
Definition at line 124 of file profile/set.h.
π MEMBER FUNCTION DOCUMENTATION π
and now for the actual members, bestie. buckle up, there's a lot of them and we are not skipping a single one π
the _M_base accessors π
_M_baseβ the const flavour
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
const _Base & std::__profile::set<_Key, _Compare, _Allocator>::_M_base() const
[inline], [noexcept] β hands back a const _Base & and pinky-promises not to throw π
Definition at line 547 of file profile/set.h.
_M_baseβ the non-const flavour
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
_Base & std::__profile::set<_Key, _Compare, _Allocator>::_M_base()
[inline], [noexcept] β same deal, just without the const, so you get a mutable _Base & π₯
Definition at line 544 of file profile/set.h.
the inherited _Ordered_profile squad π¦
these four are [inherited], so they're living their best life over in ordered_base.h and the set is just borrowing them, iykyk.
_M_profile_constructβvoid, no args
template<typename _Cont>
void std::__profile::_Ordered_profile<_Cont>::_M_profile_construct()
[inline], [protected], [noexcept], [inherited] β protected AND noexcept, a true mystery wrapped in an enigma π§
Definition at line 75 of file ordered_base.h.
_M_profile_destructβvoid, no args
template<typename _Cont>
void std::__profile::_Ordered_profile<_Cont>::_M_profile_destruct()
[inline], [protected], [noexcept], [inherited] β the matching pair to the one above, and yes it also refuses to throw π
Definition at line 79 of file ordered_base.h.
_M_profile_iterateβ takes an optionalint __rewind
template<typename _Cont>
void std::__profile::_Ordered_profile<_Cont>::_M_profile_iterate(int __rewind = 0) const
[inline], [inherited] β note it's a const member and __rewind defaults to 0, so you can call it with nothing at all πΈ
Definition at line 40 of file ordered_base.h.
_M_swapβ swaps with another_Ordered_profile<_Cont>
template<typename _Cont>
void std::__profile::_Ordered_profile<_Cont>::_M_swap(_Ordered_profile<_Cont> & __other)
[inline], [protected], [inherited] β protected, so it's for the family only, no outsiders π
Definition at line 86 of file ordered_base.h.
the actual set members π
beginβ const flavour
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
const_iterator std::__profile::set<_Key, _Compare, _Allocator>::begin() const
[inline], [noexcept] β returns a const_iterator, no throws, we love a low-maintenance bestie β¨
Definition at line 159 of file profile/set.h.
beginβ non-const flavour
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
iterator std::__profile::set<_Key, _Compare, _Allocator>::begin()
[inline], [noexcept] β a plain iterator this time π
Definition at line 155 of file profile/set.h.
cbegin
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
const_iterator std::__profile::set<_Key, _Compare, _Allocator>::cbegin() const
[inline], [noexcept] β the c is for const, obviously, and it's a const member too, so it's double-const-coded π
Definition at line 172 of file profile/set.h.
cend
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
const_iterator std::__profile::set<_Key, _Compare, _Allocator>::cend() const
[inline], [noexcept] β same energy, other end of the range π
Definition at line 176 of file profile/set.h.
clear
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
void std::__profile::set<_Key, _Compare, _Allocator>::clear()
[inline], [noexcept] β void, no args, and it's marked noexcept so it's not about to pop off and throw at you π
Definition at line 356 of file profile/set.h.
countβ the transparent-comparator one π
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::set<_Key, _Compare, _Allocator>::count(const _Kt & __x) const
[inline] β see that _Req = typename __has_is_transparent<_Compare, _Kt>::type? that's the SFINAE bouncer at the door making sure your comparator is transparent enough for _Kt. it's a const member returning size_type π«Ά
Definition at line 375 of file profile/set.h.
countβ the plainkey_typeone
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
size_type std::__profile::set<_Key, _Compare, _Allocator>::count(const key_type & __x) const
[inline] β no fancy template guard here, just const key_type & __x, const member, returns size_type π
Definition at line 364 of file profile/set.h.
crbegin
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
const_reverse_iterator std::__profile::set<_Key, _Compare, _Allocator>::crbegin() const
[inline], [noexcept] β const_reverse_iterator, reverse girlies rise πΈ
Definition at line 210 of file profile/set.h.
crend
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
const_reverse_iterator std::__profile::set<_Key, _Compare, _Allocator>::crend() const
[inline], [noexcept] β and the matching reverse end π§
Definition at line 217 of file profile/set.h.
emplaceβ variadic queen π
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
template<typename... _Args>
std::pair<iterator, bool> std::__profile::set<_Key, _Compare, _Allocator>::emplace(_Args &&... __args)
[inline] β returns std::pair<iterator, bool> and takes _Args &&... __args because she contains multitudes β¨
Definition at line 236 of file profile/set.h.
emplace_hintβ same, but with a hint π
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
template<typename... _Args>
iterator std::__profile::set<_Key, _Compare, _Allocator>::emplace_hint(const_iterator __pos, _Args &&... __args)
[inline] β you pass a const_iterator __pos as your lil hint, then all the __args π
Definition at line 246 of file profile/set.h.
endβ const flavour
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
const_iterator std::__profile::set<_Key, _Compare, _Allocator>::end() const
[inline], [noexcept] β const_iterator, const member, no throw π
Definition at line 167 of file profile/set.h.
endβ non-const flavour
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
iterator std::__profile::set<_Key, _Compare, _Allocator>::end()
[inline], [noexcept] β mutable iterator this time π
Definition at line 163 of file profile/set.h.
equal_rangeβ transparent version, non-const
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::set<_Key, _Compare, _Allocator>::equal_range(const _Kt & __x)
[inline] β returns std::pair<iterator, iterator>, and yes the same __has_is_transparent guard is doing the gatekeeping π«Ά
Definition at line 524 of file profile/set.h.
equal_rangeβ transparent version, const
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::set<_Key, _Compare, _Allocator>::equal_range(const _Kt & __x) const
[inline] β same deal but everything's const, as the universe intended π
Definition at line 535 of file profile/set.h.
equal_rangeβ plainkey_type, non-const
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
std::pair<iterator, iterator> std::__profile::set<_Key, _Compare, _Allocator>::equal_range(const key_type & __x)
[inline] β const key_type & __x, std::pair<iterator, iterator>, no template trickery, simple and clean β¨
Definition at line 500 of file profile/set.h.
equal_rangeβ plainkey_type, const
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
std::pair<const_iterator, const_iterator> std::__profile::set<_Key, _Compare, _Allocator>::equal_range(const key_type & __x) const
[inline] β the const member, returning a std::pair<const_iterator, const_iterator> π
Definition at line 510 of file profile/set.h.
eraseβ by key π₯
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
size_type std::__profile::set<_Key, _Compare, _Allocator>::erase(const key_type & __x)
[inline] β takes const key_type & __x, hands back a size_type. note: not const, because it's literally erasing things, bestie π
Definition at line 325 of file profile/set.h.
eraseβ by range π¦
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
iterator std::__profile::set<_Key, _Compare, _Allocator>::erase(const_iterator __first, const_iterator __last)
[inline] β const_iterator __first and const_iterator __last, returns an iterator πΈ
Definition at line 334 of file profile/set.h.
eraseβ by position π
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
iterator std::__profile::set<_Key, _Compare, _Allocator>::erase(const_iterator __pos)
[inline] β one const_iterator __pos, returns an iterator π§
Definition at line 310 of file profile/set.h.
findβ transparent version, non-const
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::set<_Key, _Compare, _Allocator>::find(const _Kt & __x)
[inline] β the transparent-comparator find, returns an iterator, _Req guard present and accounted for π
Definition at line 402 of file profile/set.h.
findβ transparent version, const
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::set<_Key, _Compare, _Allocator>::find(const _Kt & __x) const
[inline] β same transparent magic, const member, const_iterator out the other side π
Definition at line 412 of file profile/set.h.
findβ plainkey_typeone
template<typename _Key, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>>
iterator std::__profile::set<_Key, _Compare, _Allocator>::find(const key_type & __x)
[inline] β const key_type & __x in, iterator out, no template params beyond the class ones π
Definition at line 384 of file profile/set.h.
π
find β the const one
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> const_iterator std::__profile::set< _Key, _Compare, _Allocator >::find (const key_type & __x) const [inline]
Definition at line 391 of file profile/set.h.
πΈ insert β the iterator-range one
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> template<typename _InputIterator > void std::__profile::set< _Key, _Compare, _Allocator >::insert (_InputIterator __first, _InputIterator __last) [inline]
Definition at line 296 of file profile/set.h.
π«Ά insert β the single const value_type & one
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> std::pair< iterator, bool > std::__profile::set< _Key, _Compare, _Allocator >::insert (const value_type & __x) [inline]
Definition at line 258 of file profile/set.h.
β¨ insert β hint + lvalue value
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> iterator std::__profile::set< _Key, _Compare, _Allocator >::insert (const_iterator __pos, const value_type & __x) [inline]
Definition at line 279 of file profile/set.h.
π insert β hint + rvalue value
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> iterator std::__profile::set< _Key, _Compare, _Allocator >::insert (const_iterator __pos, value_type && __x) [inline]
Definition at line 290 of file profile/set.h.
π insert β the initializer_list one
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> void std::__profile::set< _Key, _Compare, _Allocator >::insert (initializer_list< value_type > __l) [inline]
Definition at line 304 of file profile/set.h.
π¦ insert β the rvalue value_type && one
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> std::pair< iterator, bool > std::__profile::set< _Key, _Compare, _Allocator >::insert (value_type && __x) [inline]
Definition at line 268 of file profile/set.h.
π lower_bound β the transparent _Kt one
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::set< _Key, _Compare, _Allocator >::lower_bound (const _Kt & __x) [inline]
Definition at line 440 of file profile/set.h.
π lower_bound β transparent _Kt, const flavour
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::set< _Key, _Compare, _Allocator >::lower_bound (const _Kt & __x) const [inline]
Definition at line 451 of file profile/set.h.
π lower_bound β plain key_type
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> iterator std::__profile::set< _Key, _Compare, _Allocator >::lower_bound (const key_type & __x) [inline]
Definition at line 420 of file profile/set.h.
π lower_bound β plain key_type, const flavour
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> const_iterator std::__profile::set< _Key, _Compare, _Allocator >::lower_bound (const key_type & __x) const [inline]
Definition at line 428 of file profile/set.h.
π
operator= β the initializer_list assignment
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> set & std::__profile::set< _Key, _Compare, _Allocator >::operator= (initializer_list< value_type > __l) [inline]
Definition at line 144 of file profile/set.h.
πΈ rbegin β const, and yes it's [noexcept]
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> const_reverse_iterator std::__profile::set< _Key, _Compare, _Allocator >::rbegin () const [inline], [noexcept]
Definition at line 188 of file profile/set.h.
π«Ά rbegin β non-const, also [noexcept]
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> reverse_iterator std::__profile::set< _Key, _Compare, _Allocator >::rbegin () [inline], [noexcept]
Definition at line 181 of file profile/set.h.
π rend β const, [noexcept] bestie
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> const_reverse_iterator std::__profile::set< _Key, _Compare, _Allocator >::rend () const [inline], [noexcept]
Definition at line 202 of file profile/set.h.
π¦ rend β non-const, [noexcept]
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> reverse_iterator std::__profile::set< _Key, _Compare, _Allocator >::rend () [inline], [noexcept]
Definition at line 195 of file profile/set.h.
π₯ swap β [noexcept], obvs
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> void std::__profile::set< _Key, _Compare, _Allocator >::swap (set< _Key, _Compare, _Allocator > & __x) [inline], [noexcept]
Definition at line 225 of file profile/set.h.
π upper_bound β transparent _Kt
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::set< _Key, _Compare, _Allocator >::upper_bound (const _Kt & __x) [inline]
Definition at line 480 of file profile/set.h.
π upper_bound β transparent _Kt, const flavour
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::set< _Key, _Compare, _Allocator >::upper_bound (const _Kt & __x) const [inline]
Definition at line 491 of file profile/set.h.
π upper_bound β plain key_type
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> iterator std::__profile::set< _Key, _Compare, _Allocator >::upper_bound (const key_type & __x) [inline]
Definition at line 460 of file profile/set.h.
π upper_bound β plain key_type, const flavour
template<typename _Key , typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<_Key>> const_iterator std::__profile::set< _Key, _Compare, _Allocator >::upper_bound (const key_type & __x) const [inline]
Definition at line 468 of file profile/set.h.
ποΈ MEMBER DATA DOCUMENTATION ποΈ
Okay so there's literally one data member in this whole situation, and bestie, it is protected and inherited. The way that's two whole qualifiers π
π _M_map2umap_info
template<typename _Cont > __gnu_profile::__map2umap_info* std::__profile::_Ordered_profile< _Cont >::_M_map2umap_info [protected], [inherited]
Definition at line 89 of file ordered_base.h.
It's a__gnu_profile::__map2umap_info*, it's[protected], and it's[inherited]β all three of those, fr fr. Don't lose the pointer asterisk, she's iconic.
βοΈ AUTHOR βοΈ
Generated automatically by Doxygen for libstdc++ from the source code.
That's it, that's the whole author section β the robot did it, no cap π€β¨
and that's a wrap on the whole page, bestie!! π This lil masterpiece came out of libstdc++, and the footer tag on the page is std::__profile::set(3cxx) β so if you're citing it, that's the version line and page name to quote. Go forth and <pink>profile</pink> your <cyan>sets</cyan>, you main character ππ
π¦ 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