29 #ifndef _GLIBCXX_PROFILE_DEQUE 
   30 #define _GLIBCXX_PROFILE_DEQUE 1 
   34 namespace std _GLIBCXX_VISIBILITY(default)
 
   39   template<
typename _Tp, 
typename _Allocator = std::allocator<_Tp> >
 
   41     : 
public _GLIBCXX_STD_C::deque<_Tp, _Allocator>
 
   43       typedef  _GLIBCXX_STD_C::deque<_Tp, _Allocator> 
_Base;
 
   46       typedef typename _Base::reference             reference;
 
   47       typedef typename _Base::const_reference       const_reference;
 
   49       typedef typename _Base::iterator             iterator;
 
   50       typedef typename _Base::const_iterator       const_iterator;
 
   51       typedef typename _Base::reverse_iterator     reverse_iterator;
 
   52       typedef typename _Base::const_reverse_iterator const_reverse_iterator;
 
   54       typedef typename _Base::size_type             size_type;
 
   55       typedef typename _Base::difference_type       difference_type;
 
   57       typedef _Tp                   value_type;
 
   58       typedef _Allocator                allocator_type;
 
   59       typedef typename _Base::pointer               pointer;
 
   60       typedef typename _Base::const_pointer         const_pointer;
 
   64       deque(
const _Allocator& __a = _Allocator())
 
   67 #if __cplusplus >= 201103L 
   72       deque(size_type __n, 
const _Tp& __value,
 
   73         const _Allocator& __a = _Allocator())
 
   74       : 
_Base(__n, __value, __a) { }
 
   77       deque(size_type __n, 
const _Tp& __value = _Tp(),
 
   78         const _Allocator& __a = _Allocator())
 
   79       : 
_Base(__n, __value, __a) { }
 
   82 #if __cplusplus >= 201103L 
   83       template<
typename _InputIterator,
 
   84            typename = std::_RequireInputIter<_InputIterator>>
 
   86       template<
typename _InputIterator>
 
   88         deque(_InputIterator __first, _InputIterator __last,
 
   89           const _Allocator& __a = _Allocator())
 
   90     : 
_Base(__first, __last, __a)
 
   93       deque(
const deque& __x)
 
   96       deque(
const _Base& __x)
 
   99 #if __cplusplus >= 201103L 
  101       : 
_Base(std::move(__x))
 
  105         const allocator_type& __a = allocator_type())
 
  106       : 
_Base(__l, __a) { }
 
  109       ~deque() _GLIBCXX_NOEXCEPT { }
 
  112       operator=(
const deque& __x)
 
  114     *
static_cast<_Base*
>(
this) = __x;
 
  118 #if __cplusplus >= 201103L 
  120       operator=(deque&& __x) noexcept
 
  132     *
static_cast<_Base*
>(
this) = __l;
 
  137 #if __cplusplus >= 201103L 
  138       template<
typename _InputIterator,
 
  139            typename = std::_RequireInputIter<_InputIterator>>
 
  141       template<
typename _InputIterator>
 
  144         assign(_InputIterator __first, _InputIterator __last)
 
  146       _Base::assign(__first, __last);
 
  150       assign(size_type __n, 
const _Tp& __t)
 
  152     _Base::assign(__n, __t);
 
  155 #if __cplusplus >= 201103L 
  163       using _Base::get_allocator;
 
  167       begin() _GLIBCXX_NOEXCEPT
 
  168       { 
return iterator(_Base::begin()); }
 
  171       begin() 
const _GLIBCXX_NOEXCEPT
 
  172       { 
return const_iterator(_Base::begin()); }
 
  175       end() _GLIBCXX_NOEXCEPT
 
  176       { 
return iterator(_Base::end()); }
 
  179       end() 
const _GLIBCXX_NOEXCEPT
 
  180       { 
return const_iterator(_Base::end()); }
 
  183       rbegin() _GLIBCXX_NOEXCEPT
 
  184       { 
return reverse_iterator(end()); }
 
  186       const_reverse_iterator
 
  187       rbegin() 
const _GLIBCXX_NOEXCEPT
 
  188       { 
return const_reverse_iterator(end()); }
 
  191       rend() _GLIBCXX_NOEXCEPT
 
  192       { 
return reverse_iterator(begin()); }
 
  194       const_reverse_iterator
 
  195       rend() 
const _GLIBCXX_NOEXCEPT
 
  196       { 
return const_reverse_iterator(begin()); }
 
  198 #if __cplusplus >= 201103L 
  200       cbegin() 
const noexcept
 
  201       { 
return const_iterator(_Base::begin()); }
 
  204       cend() 
const noexcept
 
  205       { 
return const_iterator(_Base::end()); }
 
  207       const_reverse_iterator
 
  208       crbegin() 
const noexcept
 
  209       { 
return const_reverse_iterator(end()); }
 
  211       const_reverse_iterator
 
  212       crend() 
const noexcept
 
  213       { 
return const_reverse_iterator(begin()); }
 
  218       using _Base::max_size;
 
  220 #if __cplusplus >= 201103L 
  222       resize(size_type __sz)
 
  228       resize(size_type __sz, 
const _Tp& __c)
 
  230     _Base::resize(__sz, __c);
 
  234       resize(size_type __sz, _Tp __c = _Tp())
 
  236     _Base::resize(__sz, __c);
 
  240 #if __cplusplus >= 201103L 
  241       using _Base::shrink_to_fit;
 
  248       operator[](size_type __n) _GLIBCXX_NOEXCEPT
 
  250     return _M_base()[__n];
 
  254       operator[](size_type __n) 
const _GLIBCXX_NOEXCEPT
 
  256     return _M_base()[__n];
 
  262       front() _GLIBCXX_NOEXCEPT
 
  264     return _Base::front();
 
  268       front() 
const _GLIBCXX_NOEXCEPT
 
  270     return _Base::front();
 
  274       back() _GLIBCXX_NOEXCEPT
 
  276     return _Base::back();
 
  280       back() 
const _GLIBCXX_NOEXCEPT
 
  282     return _Base::back();
 
  287       push_front(
const _Tp& __x)
 
  289     _Base::push_front(__x);
 
  293       push_back(
const _Tp& __x)
 
  295     _Base::push_back(__x);
 
  298 #if __cplusplus >= 201103L 
  300       push_front(_Tp&& __x)
 
  301       { emplace_front(std::move(__x)); }
 
  305       { emplace_back(std::move(__x)); }
 
  307       template<
typename... _Args>
 
  309         emplace_front(_Args&&... __args)
 
  311       _Base::emplace_front(std::forward<_Args>(__args)...);
 
  314       template<
typename... _Args>
 
  316         emplace_back(_Args&&... __args)
 
  318       _Base::emplace_back(std::forward<_Args>(__args)...);
 
  321       template<
typename... _Args>
 
  323         emplace(const_iterator __position, _Args&&... __args)
 
  325       typename _Base::iterator __res = _Base::emplace(__position,
 
  326                         std::forward<_Args>(__args)...);
 
  327       return iterator(__res);
 
  332 #if __cplusplus >= 201103L 
  333       insert(const_iterator __position, 
const _Tp& __x)
 
  335       insert(iterator __position, 
const _Tp& __x)
 
  338     typename _Base::iterator __res = _Base::insert(__position, __x);
 
  339     return iterator(__res);
 
  342 #if __cplusplus >= 201103L 
  344       insert(const_iterator __position, _Tp&& __x)
 
  345       { 
return emplace(__position, std::move(__x)); }
 
  349       { 
return _Base::insert(__p, __l); }
 
  352 #if __cplusplus >= 201103L 
  354       insert(const_iterator __position, size_type __n, 
const _Tp& __x)
 
  355       { 
return _Base::insert(__position, __n, __x); }
 
  358       insert(iterator __position, size_type __n, 
const _Tp& __x)
 
  359       { _Base::insert(__position, __n, __x); }
 
  362 #if __cplusplus >= 201103L 
  363       template<
typename _InputIterator,
 
  364            typename = std::_RequireInputIter<_InputIterator>>
 
  366         insert(const_iterator __position,
 
  367            _InputIterator __first, _InputIterator __last)
 
  368         { 
return _Base::insert(__position, __first, __last); }
 
  370       template<
typename _InputIterator>
 
  372         insert(iterator __position,
 
  373            _InputIterator __first, _InputIterator __last)
 
  374         { _Base::insert(__position, __first, __last); }
 
  378       pop_front() _GLIBCXX_NOEXCEPT
 
  384       pop_back() _GLIBCXX_NOEXCEPT
 
  390 #if __cplusplus >= 201103L 
  391       erase(const_iterator __position)
 
  393       erase(iterator __position)    
 
  396     return _Base::erase(__position);
 
  400 #if __cplusplus >= 201103L 
  401       erase(const_iterator __first, const_iterator __last)
 
  403       erase(iterator __first, iterator __last)
 
  408         return _Base::erase(__first, __last);
 
  412       swap(deque& __x) _GLIBCXX_NOEXCEPT
 
  418       clear() _GLIBCXX_NOEXCEPT
 
  424       _M_base() _GLIBCXX_NOEXCEPT       { 
return *
this; }
 
  427       _M_base() 
const _GLIBCXX_NOEXCEPT { 
return *
this; }
 
  430   template<
typename _Tp, 
typename _Alloc>
 
  434     { 
return __lhs._M_base() == __rhs._M_base(); }
 
  436   template<
typename _Tp, 
typename _Alloc>
 
  440     { 
return __lhs._M_base() != __rhs._M_base(); }
 
  442   template<
typename _Tp, 
typename _Alloc>
 
  444     operator<(const deque<_Tp, _Alloc>& __lhs,
 
  445           const deque<_Tp, _Alloc>& __rhs)
 
  446     { 
return __lhs._M_base() < __rhs._M_base(); }
 
  448   template<
typename _Tp, 
typename _Alloc>
 
  450     operator<=(const deque<_Tp, _Alloc>& __lhs,
 
  451            const deque<_Tp, _Alloc>& __rhs)
 
  452     { 
return __lhs._M_base() <= __rhs._M_base(); }
 
  454   template<
typename _Tp, 
typename _Alloc>
 
  456     operator>=(
const deque<_Tp, _Alloc>& __lhs,
 
  457            const deque<_Tp, _Alloc>& __rhs)
 
  458     { 
return __lhs._M_base() >= __rhs._M_base(); }
 
  460   template<
typename _Tp, 
typename _Alloc>
 
  462     operator>(
const deque<_Tp, _Alloc>& __lhs,
 
  463           const deque<_Tp, _Alloc>& __rhs)
 
  464     { 
return __lhs._M_base() > __rhs._M_base(); }
 
  466   template<
typename _Tp, 
typename _Alloc>
 
  468     swap(deque<_Tp, _Alloc>& __lhs, deque<_Tp, _Alloc>& __rhs)
 
  469     { __lhs.swap(__rhs); }
 
Class std::deque wrapper with performance instrumentation. 
 
constexpr size_t size() const noexcept
Returns the total number of bits. 
 
void swap(function< _Res(_Args...)> &__x, function< _Res(_Args...)> &__y)
Swap the targets of two polymorphic function object wrappers. 
 
A standard container using fixed-size memory allocation and constant-time manipulation of elements at...