43 :
public _GLIBCXX_STD_C::set<_Key,_Compare,_Allocator>,
44 public _Ordered_profile<set<_Key, _Compare, _Allocator> >
46 typedef _GLIBCXX_STD_C::set<_Key, _Compare, _Allocator>
_Base;
48 typedef typename _Base::iterator _Base_iterator;
49 typedef typename _Base::const_iterator _Base_const_iterator;
54 typedef _Key value_type;
55 typedef _Compare key_compare;
56 typedef _Compare value_compare;
57 typedef typename _Base::reference reference;
58 typedef typename _Base::const_reference const_reference;
61 typedef __iterator_tracker<_Base_const_iterator,
66 typedef typename _Base::size_type size_type;
67 typedef typename _Base::difference_type difference_type;
70#if __cplusplus < 201103L
83 explicit set(
const _Compare& __comp,
85 :
_Base(__comp, __a) { }
87#if __cplusplus >= 201103L
91 template<
typename _InputIterator>
94 const _Compare& __comp = _Compare(),
96 :
_Base(__first, __last, __comp, __a) { }
98#if __cplusplus >= 201103L
100 const _Compare& __comp = _Compare(),
109 :
_Base(__x, __a) { }
112 noexcept(
noexcept(
_Base(std::move(__x), __a)) )
113 :
_Base(std::move(__x), __a) { }
118 template<
typename _InputIterator>
121 :
_Base(__first, __last, __a) { }
127#if __cplusplus < 201103L
129 operator=(
const set& __x)
131 this->_M_profile_destruct();
133 this->_M_profile_construct();
138 operator=(
const set&) =
default;
141 operator=(
set&&) =
default;
146 this->_M_profile_destruct();
148 this->_M_profile_construct();
156 {
return iterator(_Base::begin(),
this); }
164 {
return iterator(_Base::end(),
this); }
170#if __cplusplus >= 201103L
172 cbegin()
const noexcept
176 cend()
const noexcept
183 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
190 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
197 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
204 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
208#if __cplusplus >= 201103L
210 crbegin()
const noexcept
212 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
217 crend()
const noexcept
219 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
233#if __cplusplus >= 201103L
234 template<
typename...
_Args>
238 __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1);
244 template<
typename...
_Args>
251 __profcxx_map2umap_insert(this->_M_map2umap_info,
258 insert(
const value_type& __x)
260 __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1);
266#if __cplusplus >= 201103L
268 insert(value_type&& __x)
270 __profcxx_map2umap_insert(this->_M_map2umap_info, this->size(), 1);
272 = _Base::insert(std::move(__x));
282 _Base_iterator
__res = _Base::insert(
__pos.base(), __x);
283 __profcxx_map2umap_insert(this->_M_map2umap_info,
288#if __cplusplus >= 201103L
291 {
return iterator(_Base::insert(
__pos.base(), std::move(__x)),
this); }
294 template<
typename _InputIterator>
298 for (; __first != __last; ++__first)
302#if __cplusplus >= 201103L
305 { insert(
__l.begin(),
__l.end()); }
308#if __cplusplus >= 201103L
312 __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1);
319 __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1);
320 _Base::erase(
__pos.base());
327 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
328 __profcxx_map2umap_erase(this->_M_map2umap_info, this->size(), 1);
329 return _Base::erase(__x);
332#if __cplusplus >= 201103L
336 if (__first != __last)
339 for (; __first != __last;)
340 __ret = erase(__first++);
344 return iterator(_Base::erase(__first.base(), __last.base()),
this);
350 for (; __first != __last;)
358 this->_M_profile_destruct();
360 this->_M_profile_construct();
366 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
367 return _Base::count(__x);
370#if __cplusplus > 201103L
371 template<
typename _Kt,
373 typename __has_is_transparent<_Compare, _Kt>::type>
375 count(
const _Kt& __x)
const
377 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
378 return _Base::count(__x);
386 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
387 return iterator(_Base::find(__x),
this);
393 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
397#if __cplusplus > 201103L
398 template<
typename _Kt,
400 typename __has_is_transparent<_Compare, _Kt>::type>
404 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
405 return { _Base::find(__x),
this };
408 template<
typename _Kt,
410 typename __has_is_transparent<_Compare, _Kt>::type>
412 find(
const _Kt& __x)
const
414 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
415 return { _Base::find(__x),
this };
422 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
423 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
424 return iterator(_Base::lower_bound(__x),
this);
428 lower_bound(
const key_type& __x)
const
430 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
431 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
435#if __cplusplus > 201103L
436 template<
typename _Kt,
438 typename __has_is_transparent<_Compare, _Kt>::type>
440 lower_bound(
const _Kt& __x)
442 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
443 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
444 return { _Base::lower_bound(__x),
this };
447 template<
typename _Kt,
449 typename __has_is_transparent<_Compare, _Kt>::type>
451 lower_bound(
const _Kt& __x)
const
453 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
454 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
455 return { _Base::lower_bound(__x),
this };
462 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
463 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
464 return iterator(_Base::upper_bound(__x),
this);
468 upper_bound(
const key_type& __x)
const
470 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
471 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
475#if __cplusplus > 201103L
476 template<
typename _Kt,
478 typename __has_is_transparent<_Compare, _Kt>::type>
480 upper_bound(
const _Kt& __x)
482 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
483 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
484 return { _Base::upper_bound(__x),
this };
487 template<
typename _Kt,
489 typename __has_is_transparent<_Compare, _Kt>::type>
491 upper_bound(
const _Kt& __x)
const
493 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
494 __profcxx_map2umap_invalidate(this->_M_map2umap_info);
495 return { _Base::upper_bound(__x),
this };
502 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
504 = _Base::equal_range(__x);
510 equal_range(
const key_type& __x)
const
512 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
514 = _Base::equal_range(__x);
519#if __cplusplus > 201103L
520 template<
typename _Kt,
522 typename __has_is_transparent<_Compare, _Kt>::type>
524 equal_range(
const _Kt& __x)
526 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
527 auto __res = _Base::equal_range(__x);
528 return { {
__res.first,
this }, {
__res.second,
this } };
531 template<
typename _Kt,
533 typename __has_is_transparent<_Compare, _Kt>::type>
535 equal_range(
const _Kt& __x)
const
537 __profcxx_map2umap_find(this->_M_map2umap_info, this->size());
538 auto __res = _Base::equal_range(__x);
539 return { {
__res.first,
this }, {
__res.second,
this } };
557 _M_hint_used(_Base_const_iterator
__hint, _Base_iterator
__res)
560 || (
__hint == _M_base().end() && ++
__res == _M_base().end())
565 template<
typename _K1,
typename _C1,
typename _A1>
569 template<
typename _K1,
typename _C1,
typename _A1>