1*58b9f456SAndroid Build Coastguard Worker// -*- C++ -*- 2*58b9f456SAndroid Build Coastguard Worker//===--------------------------- queue ------------------------------------===// 3*58b9f456SAndroid Build Coastguard Worker// 4*58b9f456SAndroid Build Coastguard Worker// The LLVM Compiler Infrastructure 5*58b9f456SAndroid Build Coastguard Worker// 6*58b9f456SAndroid Build Coastguard Worker// This file is dual licensed under the MIT and the University of Illinois Open 7*58b9f456SAndroid Build Coastguard Worker// Source Licenses. See LICENSE.TXT for details. 8*58b9f456SAndroid Build Coastguard Worker// 9*58b9f456SAndroid Build Coastguard Worker//===----------------------------------------------------------------------===// 10*58b9f456SAndroid Build Coastguard Worker 11*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_QUEUE 12*58b9f456SAndroid Build Coastguard Worker#define _LIBCPP_QUEUE 13*58b9f456SAndroid Build Coastguard Worker 14*58b9f456SAndroid Build Coastguard Worker/* 15*58b9f456SAndroid Build Coastguard Worker queue synopsis 16*58b9f456SAndroid Build Coastguard Worker 17*58b9f456SAndroid Build Coastguard Workernamespace std 18*58b9f456SAndroid Build Coastguard Worker{ 19*58b9f456SAndroid Build Coastguard Worker 20*58b9f456SAndroid Build Coastguard Workertemplate <class T, class Container = deque<T>> 21*58b9f456SAndroid Build Coastguard Workerclass queue 22*58b9f456SAndroid Build Coastguard Worker{ 23*58b9f456SAndroid Build Coastguard Workerpublic: 24*58b9f456SAndroid Build Coastguard Worker typedef Container container_type; 25*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::value_type value_type; 26*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::reference reference; 27*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::const_reference const_reference; 28*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::size_type size_type; 29*58b9f456SAndroid Build Coastguard Worker 30*58b9f456SAndroid Build Coastguard Workerprotected: 31*58b9f456SAndroid Build Coastguard Worker container_type c; 32*58b9f456SAndroid Build Coastguard Worker 33*58b9f456SAndroid Build Coastguard Workerpublic: 34*58b9f456SAndroid Build Coastguard Worker queue() = default; 35*58b9f456SAndroid Build Coastguard Worker ~queue() = default; 36*58b9f456SAndroid Build Coastguard Worker 37*58b9f456SAndroid Build Coastguard Worker queue(const queue& q) = default; 38*58b9f456SAndroid Build Coastguard Worker queue(queue&& q) = default; 39*58b9f456SAndroid Build Coastguard Worker 40*58b9f456SAndroid Build Coastguard Worker queue& operator=(const queue& q) = default; 41*58b9f456SAndroid Build Coastguard Worker queue& operator=(queue&& q) = default; 42*58b9f456SAndroid Build Coastguard Worker 43*58b9f456SAndroid Build Coastguard Worker explicit queue(const container_type& c); 44*58b9f456SAndroid Build Coastguard Worker explicit queue(container_type&& c) 45*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 46*58b9f456SAndroid Build Coastguard Worker explicit queue(const Alloc& a); 47*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 48*58b9f456SAndroid Build Coastguard Worker queue(const container_type& c, const Alloc& a); 49*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 50*58b9f456SAndroid Build Coastguard Worker queue(container_type&& c, const Alloc& a); 51*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 52*58b9f456SAndroid Build Coastguard Worker queue(const queue& q, const Alloc& a); 53*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 54*58b9f456SAndroid Build Coastguard Worker queue(queue&& q, const Alloc& a); 55*58b9f456SAndroid Build Coastguard Worker 56*58b9f456SAndroid Build Coastguard Worker bool empty() const; 57*58b9f456SAndroid Build Coastguard Worker size_type size() const; 58*58b9f456SAndroid Build Coastguard Worker 59*58b9f456SAndroid Build Coastguard Worker reference front(); 60*58b9f456SAndroid Build Coastguard Worker const_reference front() const; 61*58b9f456SAndroid Build Coastguard Worker reference back(); 62*58b9f456SAndroid Build Coastguard Worker const_reference back() const; 63*58b9f456SAndroid Build Coastguard Worker 64*58b9f456SAndroid Build Coastguard Worker void push(const value_type& v); 65*58b9f456SAndroid Build Coastguard Worker void push(value_type&& v); 66*58b9f456SAndroid Build Coastguard Worker template <class... Args> reference emplace(Args&&... args); // reference in C++17 67*58b9f456SAndroid Build Coastguard Worker void pop(); 68*58b9f456SAndroid Build Coastguard Worker 69*58b9f456SAndroid Build Coastguard Worker void swap(queue& q) noexcept(is_nothrow_swappable_v<Container>) 70*58b9f456SAndroid Build Coastguard Worker}; 71*58b9f456SAndroid Build Coastguard Worker 72*58b9f456SAndroid Build Coastguard Workertemplate<class Container> 73*58b9f456SAndroid Build Coastguard Worker queue(Container) -> queue<typename Container::value_type, Container>; // C++17 74*58b9f456SAndroid Build Coastguard Worker 75*58b9f456SAndroid Build Coastguard Workertemplate<class Container, class Allocator> 76*58b9f456SAndroid Build Coastguard Worker queue(Container, Allocator) -> queue<typename Container::value_type, Container>; // C++17 77*58b9f456SAndroid Build Coastguard Worker 78*58b9f456SAndroid Build Coastguard Workertemplate <class T, class Container> 79*58b9f456SAndroid Build Coastguard Worker bool operator==(const queue<T, Container>& x,const queue<T, Container>& y); 80*58b9f456SAndroid Build Coastguard Worker 81*58b9f456SAndroid Build Coastguard Workertemplate <class T, class Container> 82*58b9f456SAndroid Build Coastguard Worker bool operator< (const queue<T, Container>& x,const queue<T, Container>& y); 83*58b9f456SAndroid Build Coastguard Worker 84*58b9f456SAndroid Build Coastguard Workertemplate <class T, class Container> 85*58b9f456SAndroid Build Coastguard Worker bool operator!=(const queue<T, Container>& x,const queue<T, Container>& y); 86*58b9f456SAndroid Build Coastguard Worker 87*58b9f456SAndroid Build Coastguard Workertemplate <class T, class Container> 88*58b9f456SAndroid Build Coastguard Worker bool operator> (const queue<T, Container>& x,const queue<T, Container>& y); 89*58b9f456SAndroid Build Coastguard Worker 90*58b9f456SAndroid Build Coastguard Workertemplate <class T, class Container> 91*58b9f456SAndroid Build Coastguard Worker bool operator>=(const queue<T, Container>& x,const queue<T, Container>& y); 92*58b9f456SAndroid Build Coastguard Worker 93*58b9f456SAndroid Build Coastguard Workertemplate <class T, class Container> 94*58b9f456SAndroid Build Coastguard Worker bool operator<=(const queue<T, Container>& x,const queue<T, Container>& y); 95*58b9f456SAndroid Build Coastguard Worker 96*58b9f456SAndroid Build Coastguard Workertemplate <class T, class Container> 97*58b9f456SAndroid Build Coastguard Worker void swap(queue<T, Container>& x, queue<T, Container>& y) 98*58b9f456SAndroid Build Coastguard Worker noexcept(noexcept(x.swap(y))); 99*58b9f456SAndroid Build Coastguard Worker 100*58b9f456SAndroid Build Coastguard Workertemplate <class T, class Container = vector<T>, 101*58b9f456SAndroid Build Coastguard Worker class Compare = less<typename Container::value_type>> 102*58b9f456SAndroid Build Coastguard Workerclass priority_queue 103*58b9f456SAndroid Build Coastguard Worker{ 104*58b9f456SAndroid Build Coastguard Workerpublic: 105*58b9f456SAndroid Build Coastguard Worker typedef Container container_type; 106*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::value_type value_type; 107*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::reference reference; 108*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::const_reference const_reference; 109*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::size_type size_type; 110*58b9f456SAndroid Build Coastguard Worker 111*58b9f456SAndroid Build Coastguard Workerprotected: 112*58b9f456SAndroid Build Coastguard Worker container_type c; 113*58b9f456SAndroid Build Coastguard Worker Compare comp; 114*58b9f456SAndroid Build Coastguard Worker 115*58b9f456SAndroid Build Coastguard Workerpublic: 116*58b9f456SAndroid Build Coastguard Worker priority_queue() = default; 117*58b9f456SAndroid Build Coastguard Worker ~priority_queue() = default; 118*58b9f456SAndroid Build Coastguard Worker 119*58b9f456SAndroid Build Coastguard Worker priority_queue(const priority_queue& q) = default; 120*58b9f456SAndroid Build Coastguard Worker priority_queue(priority_queue&& q) = default; 121*58b9f456SAndroid Build Coastguard Worker 122*58b9f456SAndroid Build Coastguard Worker priority_queue& operator=(const priority_queue& q) = default; 123*58b9f456SAndroid Build Coastguard Worker priority_queue& operator=(priority_queue&& q) = default; 124*58b9f456SAndroid Build Coastguard Worker 125*58b9f456SAndroid Build Coastguard Worker explicit priority_queue(const Compare& comp); 126*58b9f456SAndroid Build Coastguard Worker priority_queue(const Compare& comp, const container_type& c); 127*58b9f456SAndroid Build Coastguard Worker explicit priority_queue(const Compare& comp, container_type&& c); 128*58b9f456SAndroid Build Coastguard Worker template <class InputIterator> 129*58b9f456SAndroid Build Coastguard Worker priority_queue(InputIterator first, InputIterator last, 130*58b9f456SAndroid Build Coastguard Worker const Compare& comp = Compare()); 131*58b9f456SAndroid Build Coastguard Worker template <class InputIterator> 132*58b9f456SAndroid Build Coastguard Worker priority_queue(InputIterator first, InputIterator last, 133*58b9f456SAndroid Build Coastguard Worker const Compare& comp, const container_type& c); 134*58b9f456SAndroid Build Coastguard Worker template <class InputIterator> 135*58b9f456SAndroid Build Coastguard Worker priority_queue(InputIterator first, InputIterator last, 136*58b9f456SAndroid Build Coastguard Worker const Compare& comp, container_type&& c); 137*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 138*58b9f456SAndroid Build Coastguard Worker explicit priority_queue(const Alloc& a); 139*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 140*58b9f456SAndroid Build Coastguard Worker priority_queue(const Compare& comp, const Alloc& a); 141*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 142*58b9f456SAndroid Build Coastguard Worker priority_queue(const Compare& comp, const container_type& c, 143*58b9f456SAndroid Build Coastguard Worker const Alloc& a); 144*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 145*58b9f456SAndroid Build Coastguard Worker priority_queue(const Compare& comp, container_type&& c, 146*58b9f456SAndroid Build Coastguard Worker const Alloc& a); 147*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 148*58b9f456SAndroid Build Coastguard Worker priority_queue(const priority_queue& q, const Alloc& a); 149*58b9f456SAndroid Build Coastguard Worker template <class Alloc> 150*58b9f456SAndroid Build Coastguard Worker priority_queue(priority_queue&& q, const Alloc& a); 151*58b9f456SAndroid Build Coastguard Worker 152*58b9f456SAndroid Build Coastguard Worker bool empty() const; 153*58b9f456SAndroid Build Coastguard Worker size_type size() const; 154*58b9f456SAndroid Build Coastguard Worker const_reference top() const; 155*58b9f456SAndroid Build Coastguard Worker 156*58b9f456SAndroid Build Coastguard Worker void push(const value_type& v); 157*58b9f456SAndroid Build Coastguard Worker void push(value_type&& v); 158*58b9f456SAndroid Build Coastguard Worker template <class... Args> void emplace(Args&&... args); 159*58b9f456SAndroid Build Coastguard Worker void pop(); 160*58b9f456SAndroid Build Coastguard Worker 161*58b9f456SAndroid Build Coastguard Worker void swap(priority_queue& q) 162*58b9f456SAndroid Build Coastguard Worker noexcept(is_nothrow_swappable_v<Container> && 163*58b9f456SAndroid Build Coastguard Worker is_nothrow_swappable_v<Comp>) 164*58b9f456SAndroid Build Coastguard Worker}; 165*58b9f456SAndroid Build Coastguard Worker 166*58b9f456SAndroid Build Coastguard Workertemplate <class Compare, class Container> 167*58b9f456SAndroid Build Coastguard Workerpriority_queue(Compare, Container) 168*58b9f456SAndroid Build Coastguard Worker -> priority_queue<typename Container::value_type, Container, Compare>; // C++17 169*58b9f456SAndroid Build Coastguard Worker 170*58b9f456SAndroid Build Coastguard Workertemplate<class InputIterator, 171*58b9f456SAndroid Build Coastguard Worker class Compare = less<typename iterator_traits<InputIterator>::value_type>, 172*58b9f456SAndroid Build Coastguard Worker class Container = vector<typename iterator_traits<InputIterator>::value_type>> 173*58b9f456SAndroid Build Coastguard Workerpriority_queue(InputIterator, InputIterator, Compare = Compare(), Container = Container()) 174*58b9f456SAndroid Build Coastguard Worker -> priority_queue<typename iterator_traits<InputIterator>::value_type, Container, Compare>; // C++17 175*58b9f456SAndroid Build Coastguard Worker 176*58b9f456SAndroid Build Coastguard Workertemplate<class Compare, class Container, class Allocator> 177*58b9f456SAndroid Build Coastguard Workerpriority_queue(Compare, Container, Allocator) 178*58b9f456SAndroid Build Coastguard Worker -> priority_queue<typename Container::value_type, Container, Compare>; // C++17 179*58b9f456SAndroid Build Coastguard Worker 180*58b9f456SAndroid Build Coastguard Workertemplate <class T, class Container, class Compare> 181*58b9f456SAndroid Build Coastguard Worker void swap(priority_queue<T, Container, Compare>& x, 182*58b9f456SAndroid Build Coastguard Worker priority_queue<T, Container, Compare>& y) 183*58b9f456SAndroid Build Coastguard Worker noexcept(noexcept(x.swap(y))); 184*58b9f456SAndroid Build Coastguard Worker 185*58b9f456SAndroid Build Coastguard Worker} // std 186*58b9f456SAndroid Build Coastguard Worker 187*58b9f456SAndroid Build Coastguard Worker*/ 188*58b9f456SAndroid Build Coastguard Worker 189*58b9f456SAndroid Build Coastguard Worker#include <__config> 190*58b9f456SAndroid Build Coastguard Worker#include <deque> 191*58b9f456SAndroid Build Coastguard Worker#include <vector> 192*58b9f456SAndroid Build Coastguard Worker#include <functional> 193*58b9f456SAndroid Build Coastguard Worker#include <algorithm> 194*58b9f456SAndroid Build Coastguard Worker 195*58b9f456SAndroid Build Coastguard Worker#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 196*58b9f456SAndroid Build Coastguard Worker#pragma GCC system_header 197*58b9f456SAndroid Build Coastguard Worker#endif 198*58b9f456SAndroid Build Coastguard Worker 199*58b9f456SAndroid Build Coastguard Worker_LIBCPP_BEGIN_NAMESPACE_STD 200*58b9f456SAndroid Build Coastguard Worker 201*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container = deque<_Tp> > class _LIBCPP_TEMPLATE_VIS queue; 202*58b9f456SAndroid Build Coastguard Worker 203*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container> 204*58b9f456SAndroid Build Coastguard Worker_LIBCPP_INLINE_VISIBILITY 205*58b9f456SAndroid Build Coastguard Workerbool 206*58b9f456SAndroid Build Coastguard Workeroperator==(const queue<_Tp, _Container>& __x,const queue<_Tp, _Container>& __y); 207*58b9f456SAndroid Build Coastguard Worker 208*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container> 209*58b9f456SAndroid Build Coastguard Worker_LIBCPP_INLINE_VISIBILITY 210*58b9f456SAndroid Build Coastguard Workerbool 211*58b9f456SAndroid Build Coastguard Workeroperator< (const queue<_Tp, _Container>& __x,const queue<_Tp, _Container>& __y); 212*58b9f456SAndroid Build Coastguard Worker 213*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container /*= deque<_Tp>*/> 214*58b9f456SAndroid Build Coastguard Workerclass _LIBCPP_TEMPLATE_VIS queue 215*58b9f456SAndroid Build Coastguard Worker{ 216*58b9f456SAndroid Build Coastguard Workerpublic: 217*58b9f456SAndroid Build Coastguard Worker typedef _Container container_type; 218*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::value_type value_type; 219*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::reference reference; 220*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::const_reference const_reference; 221*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::size_type size_type; 222*58b9f456SAndroid Build Coastguard Worker static_assert((is_same<_Tp, value_type>::value), "" ); 223*58b9f456SAndroid Build Coastguard Worker 224*58b9f456SAndroid Build Coastguard Workerprotected: 225*58b9f456SAndroid Build Coastguard Worker container_type c; 226*58b9f456SAndroid Build Coastguard Worker 227*58b9f456SAndroid Build Coastguard Workerpublic: 228*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 229*58b9f456SAndroid Build Coastguard Worker queue() 230*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(is_nothrow_default_constructible<container_type>::value) 231*58b9f456SAndroid Build Coastguard Worker : c() {} 232*58b9f456SAndroid Build Coastguard Worker 233*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 234*58b9f456SAndroid Build Coastguard Worker queue(const queue& __q) : c(__q.c) {} 235*58b9f456SAndroid Build Coastguard Worker 236*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 237*58b9f456SAndroid Build Coastguard Worker queue& operator=(const queue& __q) {c = __q.c; return *this;} 238*58b9f456SAndroid Build Coastguard Worker 239*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 240*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 241*58b9f456SAndroid Build Coastguard Worker queue(queue&& __q) 242*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(is_nothrow_move_constructible<container_type>::value) 243*58b9f456SAndroid Build Coastguard Worker : c(_VSTD::move(__q.c)) {} 244*58b9f456SAndroid Build Coastguard Worker 245*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 246*58b9f456SAndroid Build Coastguard Worker queue& operator=(queue&& __q) 247*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(is_nothrow_move_assignable<container_type>::value) 248*58b9f456SAndroid Build Coastguard Worker {c = _VSTD::move(__q.c); return *this;} 249*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 250*58b9f456SAndroid Build Coastguard Worker 251*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 252*58b9f456SAndroid Build Coastguard Worker explicit queue(const container_type& __c) : c(__c) {} 253*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 254*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 255*58b9f456SAndroid Build Coastguard Worker explicit queue(container_type&& __c) : c(_VSTD::move(__c)) {} 256*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 257*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 258*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 259*58b9f456SAndroid Build Coastguard Worker explicit queue(const _Alloc& __a, 260*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 261*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0) 262*58b9f456SAndroid Build Coastguard Worker : c(__a) {} 263*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 264*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 265*58b9f456SAndroid Build Coastguard Worker queue(const queue& __q, const _Alloc& __a, 266*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 267*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0) 268*58b9f456SAndroid Build Coastguard Worker : c(__q.c, __a) {} 269*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 270*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 271*58b9f456SAndroid Build Coastguard Worker queue(const container_type& __c, const _Alloc& __a, 272*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 273*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0) 274*58b9f456SAndroid Build Coastguard Worker : c(__c, __a) {} 275*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 276*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 277*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 278*58b9f456SAndroid Build Coastguard Worker queue(container_type&& __c, const _Alloc& __a, 279*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 280*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0) 281*58b9f456SAndroid Build Coastguard Worker : c(_VSTD::move(__c), __a) {} 282*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 283*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 284*58b9f456SAndroid Build Coastguard Worker queue(queue&& __q, const _Alloc& __a, 285*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 286*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0) 287*58b9f456SAndroid Build Coastguard Worker : c(_VSTD::move(__q.c), __a) {} 288*58b9f456SAndroid Build Coastguard Worker 289*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 290*58b9f456SAndroid Build Coastguard Worker 291*58b9f456SAndroid Build Coastguard Worker _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY 292*58b9f456SAndroid Build Coastguard Worker bool empty() const {return c.empty();} 293*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 294*58b9f456SAndroid Build Coastguard Worker size_type size() const {return c.size();} 295*58b9f456SAndroid Build Coastguard Worker 296*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 297*58b9f456SAndroid Build Coastguard Worker reference front() {return c.front();} 298*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 299*58b9f456SAndroid Build Coastguard Worker const_reference front() const {return c.front();} 300*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 301*58b9f456SAndroid Build Coastguard Worker reference back() {return c.back();} 302*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 303*58b9f456SAndroid Build Coastguard Worker const_reference back() const {return c.back();} 304*58b9f456SAndroid Build Coastguard Worker 305*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 306*58b9f456SAndroid Build Coastguard Worker void push(const value_type& __v) {c.push_back(__v);} 307*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 308*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 309*58b9f456SAndroid Build Coastguard Worker void push(value_type&& __v) {c.push_back(_VSTD::move(__v));} 310*58b9f456SAndroid Build Coastguard Worker template <class... _Args> 311*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 312*58b9f456SAndroid Build Coastguard Worker#if _LIBCPP_STD_VER > 14 313*58b9f456SAndroid Build Coastguard Worker decltype(auto) emplace(_Args&&... __args) 314*58b9f456SAndroid Build Coastguard Worker { return c.emplace_back(_VSTD::forward<_Args>(__args)...);} 315*58b9f456SAndroid Build Coastguard Worker#else 316*58b9f456SAndroid Build Coastguard Worker void emplace(_Args&&... __args) 317*58b9f456SAndroid Build Coastguard Worker { c.emplace_back(_VSTD::forward<_Args>(__args)...);} 318*58b9f456SAndroid Build Coastguard Worker#endif 319*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 320*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 321*58b9f456SAndroid Build Coastguard Worker void pop() {c.pop_front();} 322*58b9f456SAndroid Build Coastguard Worker 323*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 324*58b9f456SAndroid Build Coastguard Worker void swap(queue& __q) 325*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(__is_nothrow_swappable<container_type>::value) 326*58b9f456SAndroid Build Coastguard Worker { 327*58b9f456SAndroid Build Coastguard Worker using _VSTD::swap; 328*58b9f456SAndroid Build Coastguard Worker swap(c, __q.c); 329*58b9f456SAndroid Build Coastguard Worker } 330*58b9f456SAndroid Build Coastguard Worker 331*58b9f456SAndroid Build Coastguard Worker template <class _T1, class _C1> 332*58b9f456SAndroid Build Coastguard Worker friend 333*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 334*58b9f456SAndroid Build Coastguard Worker bool 335*58b9f456SAndroid Build Coastguard Worker operator==(const queue<_T1, _C1>& __x,const queue<_T1, _C1>& __y); 336*58b9f456SAndroid Build Coastguard Worker 337*58b9f456SAndroid Build Coastguard Worker template <class _T1, class _C1> 338*58b9f456SAndroid Build Coastguard Worker friend 339*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 340*58b9f456SAndroid Build Coastguard Worker bool 341*58b9f456SAndroid Build Coastguard Worker operator< (const queue<_T1, _C1>& __x,const queue<_T1, _C1>& __y); 342*58b9f456SAndroid Build Coastguard Worker}; 343*58b9f456SAndroid Build Coastguard Worker 344*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES 345*58b9f456SAndroid Build Coastguard Workertemplate<class _Container, 346*58b9f456SAndroid Build Coastguard Worker class = typename enable_if<!__is_allocator<_Container>::value, nullptr_t>::type 347*58b9f456SAndroid Build Coastguard Worker> 348*58b9f456SAndroid Build Coastguard Workerqueue(_Container) 349*58b9f456SAndroid Build Coastguard Worker -> queue<typename _Container::value_type, _Container>; 350*58b9f456SAndroid Build Coastguard Worker 351*58b9f456SAndroid Build Coastguard Workertemplate<class _Container, 352*58b9f456SAndroid Build Coastguard Worker class _Alloc, 353*58b9f456SAndroid Build Coastguard Worker class = typename enable_if<!__is_allocator<_Container>::value, nullptr_t>::type, 354*58b9f456SAndroid Build Coastguard Worker class = typename enable_if< __is_allocator<_Alloc>::value, nullptr_t>::type 355*58b9f456SAndroid Build Coastguard Worker> 356*58b9f456SAndroid Build Coastguard Workerqueue(_Container, _Alloc) 357*58b9f456SAndroid Build Coastguard Worker -> queue<typename _Container::value_type, _Container>; 358*58b9f456SAndroid Build Coastguard Worker#endif 359*58b9f456SAndroid Build Coastguard Worker 360*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container> 361*58b9f456SAndroid Build Coastguard Workerinline _LIBCPP_INLINE_VISIBILITY 362*58b9f456SAndroid Build Coastguard Workerbool 363*58b9f456SAndroid Build Coastguard Workeroperator==(const queue<_Tp, _Container>& __x,const queue<_Tp, _Container>& __y) 364*58b9f456SAndroid Build Coastguard Worker{ 365*58b9f456SAndroid Build Coastguard Worker return __x.c == __y.c; 366*58b9f456SAndroid Build Coastguard Worker} 367*58b9f456SAndroid Build Coastguard Worker 368*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container> 369*58b9f456SAndroid Build Coastguard Workerinline _LIBCPP_INLINE_VISIBILITY 370*58b9f456SAndroid Build Coastguard Workerbool 371*58b9f456SAndroid Build Coastguard Workeroperator< (const queue<_Tp, _Container>& __x,const queue<_Tp, _Container>& __y) 372*58b9f456SAndroid Build Coastguard Worker{ 373*58b9f456SAndroid Build Coastguard Worker return __x.c < __y.c; 374*58b9f456SAndroid Build Coastguard Worker} 375*58b9f456SAndroid Build Coastguard Worker 376*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container> 377*58b9f456SAndroid Build Coastguard Workerinline _LIBCPP_INLINE_VISIBILITY 378*58b9f456SAndroid Build Coastguard Workerbool 379*58b9f456SAndroid Build Coastguard Workeroperator!=(const queue<_Tp, _Container>& __x,const queue<_Tp, _Container>& __y) 380*58b9f456SAndroid Build Coastguard Worker{ 381*58b9f456SAndroid Build Coastguard Worker return !(__x == __y); 382*58b9f456SAndroid Build Coastguard Worker} 383*58b9f456SAndroid Build Coastguard Worker 384*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container> 385*58b9f456SAndroid Build Coastguard Workerinline _LIBCPP_INLINE_VISIBILITY 386*58b9f456SAndroid Build Coastguard Workerbool 387*58b9f456SAndroid Build Coastguard Workeroperator> (const queue<_Tp, _Container>& __x,const queue<_Tp, _Container>& __y) 388*58b9f456SAndroid Build Coastguard Worker{ 389*58b9f456SAndroid Build Coastguard Worker return __y < __x; 390*58b9f456SAndroid Build Coastguard Worker} 391*58b9f456SAndroid Build Coastguard Worker 392*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container> 393*58b9f456SAndroid Build Coastguard Workerinline _LIBCPP_INLINE_VISIBILITY 394*58b9f456SAndroid Build Coastguard Workerbool 395*58b9f456SAndroid Build Coastguard Workeroperator>=(const queue<_Tp, _Container>& __x,const queue<_Tp, _Container>& __y) 396*58b9f456SAndroid Build Coastguard Worker{ 397*58b9f456SAndroid Build Coastguard Worker return !(__x < __y); 398*58b9f456SAndroid Build Coastguard Worker} 399*58b9f456SAndroid Build Coastguard Worker 400*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container> 401*58b9f456SAndroid Build Coastguard Workerinline _LIBCPP_INLINE_VISIBILITY 402*58b9f456SAndroid Build Coastguard Workerbool 403*58b9f456SAndroid Build Coastguard Workeroperator<=(const queue<_Tp, _Container>& __x,const queue<_Tp, _Container>& __y) 404*58b9f456SAndroid Build Coastguard Worker{ 405*58b9f456SAndroid Build Coastguard Worker return !(__y < __x); 406*58b9f456SAndroid Build Coastguard Worker} 407*58b9f456SAndroid Build Coastguard Worker 408*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container> 409*58b9f456SAndroid Build Coastguard Workerinline _LIBCPP_INLINE_VISIBILITY 410*58b9f456SAndroid Build Coastguard Workertypename enable_if< 411*58b9f456SAndroid Build Coastguard Worker __is_swappable<_Container>::value, 412*58b9f456SAndroid Build Coastguard Worker void 413*58b9f456SAndroid Build Coastguard Worker>::type 414*58b9f456SAndroid Build Coastguard Workerswap(queue<_Tp, _Container>& __x, queue<_Tp, _Container>& __y) 415*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) 416*58b9f456SAndroid Build Coastguard Worker{ 417*58b9f456SAndroid Build Coastguard Worker __x.swap(__y); 418*58b9f456SAndroid Build Coastguard Worker} 419*58b9f456SAndroid Build Coastguard Worker 420*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Alloc> 421*58b9f456SAndroid Build Coastguard Workerstruct _LIBCPP_TEMPLATE_VIS uses_allocator<queue<_Tp, _Container>, _Alloc> 422*58b9f456SAndroid Build Coastguard Worker : public uses_allocator<_Container, _Alloc> 423*58b9f456SAndroid Build Coastguard Worker{ 424*58b9f456SAndroid Build Coastguard Worker}; 425*58b9f456SAndroid Build Coastguard Worker 426*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container = vector<_Tp>, 427*58b9f456SAndroid Build Coastguard Worker class _Compare = less<typename _Container::value_type> > 428*58b9f456SAndroid Build Coastguard Workerclass _LIBCPP_TEMPLATE_VIS priority_queue 429*58b9f456SAndroid Build Coastguard Worker{ 430*58b9f456SAndroid Build Coastguard Workerpublic: 431*58b9f456SAndroid Build Coastguard Worker typedef _Container container_type; 432*58b9f456SAndroid Build Coastguard Worker typedef _Compare value_compare; 433*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::value_type value_type; 434*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::reference reference; 435*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::const_reference const_reference; 436*58b9f456SAndroid Build Coastguard Worker typedef typename container_type::size_type size_type; 437*58b9f456SAndroid Build Coastguard Worker static_assert((is_same<_Tp, value_type>::value), "" ); 438*58b9f456SAndroid Build Coastguard Worker 439*58b9f456SAndroid Build Coastguard Workerprotected: 440*58b9f456SAndroid Build Coastguard Worker container_type c; 441*58b9f456SAndroid Build Coastguard Worker value_compare comp; 442*58b9f456SAndroid Build Coastguard Worker 443*58b9f456SAndroid Build Coastguard Workerpublic: 444*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 445*58b9f456SAndroid Build Coastguard Worker priority_queue() 446*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(is_nothrow_default_constructible<container_type>::value && 447*58b9f456SAndroid Build Coastguard Worker is_nothrow_default_constructible<value_compare>::value) 448*58b9f456SAndroid Build Coastguard Worker : c(), comp() {} 449*58b9f456SAndroid Build Coastguard Worker 450*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 451*58b9f456SAndroid Build Coastguard Worker priority_queue(const priority_queue& __q) : c(__q.c), comp(__q.comp) {} 452*58b9f456SAndroid Build Coastguard Worker 453*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 454*58b9f456SAndroid Build Coastguard Worker priority_queue& operator=(const priority_queue& __q) 455*58b9f456SAndroid Build Coastguard Worker {c = __q.c; comp = __q.comp; return *this;} 456*58b9f456SAndroid Build Coastguard Worker 457*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 458*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 459*58b9f456SAndroid Build Coastguard Worker priority_queue(priority_queue&& __q) 460*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(is_nothrow_move_constructible<container_type>::value && 461*58b9f456SAndroid Build Coastguard Worker is_nothrow_move_constructible<value_compare>::value) 462*58b9f456SAndroid Build Coastguard Worker : c(_VSTD::move(__q.c)), comp(_VSTD::move(__q.comp)) {} 463*58b9f456SAndroid Build Coastguard Worker 464*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 465*58b9f456SAndroid Build Coastguard Worker priority_queue& operator=(priority_queue&& __q) 466*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(is_nothrow_move_assignable<container_type>::value && 467*58b9f456SAndroid Build Coastguard Worker is_nothrow_move_assignable<value_compare>::value) 468*58b9f456SAndroid Build Coastguard Worker {c = _VSTD::move(__q.c); comp = _VSTD::move(__q.comp); return *this;} 469*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 470*58b9f456SAndroid Build Coastguard Worker 471*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 472*58b9f456SAndroid Build Coastguard Worker explicit priority_queue(const value_compare& __comp) 473*58b9f456SAndroid Build Coastguard Worker : c(), comp(__comp) {} 474*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 475*58b9f456SAndroid Build Coastguard Worker priority_queue(const value_compare& __comp, const container_type& __c); 476*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 477*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 478*58b9f456SAndroid Build Coastguard Worker explicit priority_queue(const value_compare& __comp, container_type&& __c); 479*58b9f456SAndroid Build Coastguard Worker#endif 480*58b9f456SAndroid Build Coastguard Worker template <class _InputIter> 481*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 482*58b9f456SAndroid Build Coastguard Worker priority_queue(_InputIter __f, _InputIter __l, 483*58b9f456SAndroid Build Coastguard Worker const value_compare& __comp = value_compare()); 484*58b9f456SAndroid Build Coastguard Worker template <class _InputIter> 485*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 486*58b9f456SAndroid Build Coastguard Worker priority_queue(_InputIter __f, _InputIter __l, 487*58b9f456SAndroid Build Coastguard Worker const value_compare& __comp, const container_type& __c); 488*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 489*58b9f456SAndroid Build Coastguard Worker template <class _InputIter> 490*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 491*58b9f456SAndroid Build Coastguard Worker priority_queue(_InputIter __f, _InputIter __l, 492*58b9f456SAndroid Build Coastguard Worker const value_compare& __comp, container_type&& __c); 493*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 494*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 495*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 496*58b9f456SAndroid Build Coastguard Worker explicit priority_queue(const _Alloc& __a, 497*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 498*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0); 499*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 500*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 501*58b9f456SAndroid Build Coastguard Worker priority_queue(const value_compare& __comp, const _Alloc& __a, 502*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 503*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0); 504*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 505*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 506*58b9f456SAndroid Build Coastguard Worker priority_queue(const value_compare& __comp, const container_type& __c, 507*58b9f456SAndroid Build Coastguard Worker const _Alloc& __a, 508*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 509*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0); 510*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 511*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 512*58b9f456SAndroid Build Coastguard Worker priority_queue(const priority_queue& __q, const _Alloc& __a, 513*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 514*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0); 515*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 516*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 517*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 518*58b9f456SAndroid Build Coastguard Worker priority_queue(const value_compare& __comp, container_type&& __c, 519*58b9f456SAndroid Build Coastguard Worker const _Alloc& __a, 520*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 521*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0); 522*58b9f456SAndroid Build Coastguard Worker template <class _Alloc> 523*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 524*58b9f456SAndroid Build Coastguard Worker priority_queue(priority_queue&& __q, const _Alloc& __a, 525*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 526*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type* = 0); 527*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 528*58b9f456SAndroid Build Coastguard Worker 529*58b9f456SAndroid Build Coastguard Worker _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY 530*58b9f456SAndroid Build Coastguard Worker bool empty() const {return c.empty();} 531*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 532*58b9f456SAndroid Build Coastguard Worker size_type size() const {return c.size();} 533*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 534*58b9f456SAndroid Build Coastguard Worker const_reference top() const {return c.front();} 535*58b9f456SAndroid Build Coastguard Worker 536*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 537*58b9f456SAndroid Build Coastguard Worker void push(const value_type& __v); 538*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 539*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 540*58b9f456SAndroid Build Coastguard Worker void push(value_type&& __v); 541*58b9f456SAndroid Build Coastguard Worker template <class... _Args> 542*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 543*58b9f456SAndroid Build Coastguard Worker void emplace(_Args&&... __args); 544*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 545*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 546*58b9f456SAndroid Build Coastguard Worker void pop(); 547*58b9f456SAndroid Build Coastguard Worker 548*58b9f456SAndroid Build Coastguard Worker _LIBCPP_INLINE_VISIBILITY 549*58b9f456SAndroid Build Coastguard Worker void swap(priority_queue& __q) 550*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(__is_nothrow_swappable<container_type>::value && 551*58b9f456SAndroid Build Coastguard Worker __is_nothrow_swappable<value_compare>::value); 552*58b9f456SAndroid Build Coastguard Worker}; 553*58b9f456SAndroid Build Coastguard Worker 554*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_HAS_NO_DEDUCTION_GUIDES 555*58b9f456SAndroid Build Coastguard Workertemplate <class _Compare, 556*58b9f456SAndroid Build Coastguard Worker class _Container, 557*58b9f456SAndroid Build Coastguard Worker class = typename enable_if<!__is_allocator<_Compare>::value, nullptr_t>::type, 558*58b9f456SAndroid Build Coastguard Worker class = typename enable_if<!__is_allocator<_Container>::value, nullptr_t>::type 559*58b9f456SAndroid Build Coastguard Worker> 560*58b9f456SAndroid Build Coastguard Workerpriority_queue(_Compare, _Container) 561*58b9f456SAndroid Build Coastguard Worker -> priority_queue<typename _Container::value_type, _Container, _Compare>; 562*58b9f456SAndroid Build Coastguard Worker 563*58b9f456SAndroid Build Coastguard Workertemplate<class _InputIterator, 564*58b9f456SAndroid Build Coastguard Worker class _Compare = less<typename iterator_traits<_InputIterator>::value_type>, 565*58b9f456SAndroid Build Coastguard Worker class _Container = vector<typename iterator_traits<_InputIterator>::value_type>, 566*58b9f456SAndroid Build Coastguard Worker class = typename enable_if< __is_input_iterator<_InputIterator>::value, nullptr_t>::type, 567*58b9f456SAndroid Build Coastguard Worker class = typename enable_if<!__is_allocator<_Compare>::value, nullptr_t>::type, 568*58b9f456SAndroid Build Coastguard Worker class = typename enable_if<!__is_allocator<_Container>::value, nullptr_t>::type 569*58b9f456SAndroid Build Coastguard Worker> 570*58b9f456SAndroid Build Coastguard Workerpriority_queue(_InputIterator, _InputIterator, _Compare = _Compare(), _Container = _Container()) 571*58b9f456SAndroid Build Coastguard Worker -> priority_queue<typename iterator_traits<_InputIterator>::value_type, _Container, _Compare>; 572*58b9f456SAndroid Build Coastguard Worker 573*58b9f456SAndroid Build Coastguard Workertemplate<class _Compare, 574*58b9f456SAndroid Build Coastguard Worker class _Container, 575*58b9f456SAndroid Build Coastguard Worker class _Alloc, 576*58b9f456SAndroid Build Coastguard Worker class = typename enable_if<!__is_allocator<_Compare>::value, nullptr_t>::type, 577*58b9f456SAndroid Build Coastguard Worker class = typename enable_if<!__is_allocator<_Container>::value, nullptr_t>::type, 578*58b9f456SAndroid Build Coastguard Worker class = typename enable_if< __is_allocator<_Alloc>::value, nullptr_t>::type 579*58b9f456SAndroid Build Coastguard Worker> 580*58b9f456SAndroid Build Coastguard Workerpriority_queue(_Compare, _Container, _Alloc) 581*58b9f456SAndroid Build Coastguard Worker -> priority_queue<typename _Container::value_type, _Container, _Compare>; 582*58b9f456SAndroid Build Coastguard Worker#endif 583*58b9f456SAndroid Build Coastguard Worker 584*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 585*58b9f456SAndroid Build Coastguard Workerinline 586*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(const _Compare& __comp, 587*58b9f456SAndroid Build Coastguard Worker const container_type& __c) 588*58b9f456SAndroid Build Coastguard Worker : c(__c), 589*58b9f456SAndroid Build Coastguard Worker comp(__comp) 590*58b9f456SAndroid Build Coastguard Worker{ 591*58b9f456SAndroid Build Coastguard Worker _VSTD::make_heap(c.begin(), c.end(), comp); 592*58b9f456SAndroid Build Coastguard Worker} 593*58b9f456SAndroid Build Coastguard Worker 594*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 595*58b9f456SAndroid Build Coastguard Worker 596*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 597*58b9f456SAndroid Build Coastguard Workerinline 598*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(const value_compare& __comp, 599*58b9f456SAndroid Build Coastguard Worker container_type&& __c) 600*58b9f456SAndroid Build Coastguard Worker : c(_VSTD::move(__c)), 601*58b9f456SAndroid Build Coastguard Worker comp(__comp) 602*58b9f456SAndroid Build Coastguard Worker{ 603*58b9f456SAndroid Build Coastguard Worker _VSTD::make_heap(c.begin(), c.end(), comp); 604*58b9f456SAndroid Build Coastguard Worker} 605*58b9f456SAndroid Build Coastguard Worker 606*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 607*58b9f456SAndroid Build Coastguard Worker 608*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 609*58b9f456SAndroid Build Coastguard Workertemplate <class _InputIter> 610*58b9f456SAndroid Build Coastguard Workerinline 611*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(_InputIter __f, _InputIter __l, 612*58b9f456SAndroid Build Coastguard Worker const value_compare& __comp) 613*58b9f456SAndroid Build Coastguard Worker : c(__f, __l), 614*58b9f456SAndroid Build Coastguard Worker comp(__comp) 615*58b9f456SAndroid Build Coastguard Worker{ 616*58b9f456SAndroid Build Coastguard Worker _VSTD::make_heap(c.begin(), c.end(), comp); 617*58b9f456SAndroid Build Coastguard Worker} 618*58b9f456SAndroid Build Coastguard Worker 619*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 620*58b9f456SAndroid Build Coastguard Workertemplate <class _InputIter> 621*58b9f456SAndroid Build Coastguard Workerinline 622*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(_InputIter __f, _InputIter __l, 623*58b9f456SAndroid Build Coastguard Worker const value_compare& __comp, 624*58b9f456SAndroid Build Coastguard Worker const container_type& __c) 625*58b9f456SAndroid Build Coastguard Worker : c(__c), 626*58b9f456SAndroid Build Coastguard Worker comp(__comp) 627*58b9f456SAndroid Build Coastguard Worker{ 628*58b9f456SAndroid Build Coastguard Worker c.insert(c.end(), __f, __l); 629*58b9f456SAndroid Build Coastguard Worker _VSTD::make_heap(c.begin(), c.end(), comp); 630*58b9f456SAndroid Build Coastguard Worker} 631*58b9f456SAndroid Build Coastguard Worker 632*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 633*58b9f456SAndroid Build Coastguard Worker 634*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 635*58b9f456SAndroid Build Coastguard Workertemplate <class _InputIter> 636*58b9f456SAndroid Build Coastguard Workerinline 637*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(_InputIter __f, _InputIter __l, 638*58b9f456SAndroid Build Coastguard Worker const value_compare& __comp, 639*58b9f456SAndroid Build Coastguard Worker container_type&& __c) 640*58b9f456SAndroid Build Coastguard Worker : c(_VSTD::move(__c)), 641*58b9f456SAndroid Build Coastguard Worker comp(__comp) 642*58b9f456SAndroid Build Coastguard Worker{ 643*58b9f456SAndroid Build Coastguard Worker c.insert(c.end(), __f, __l); 644*58b9f456SAndroid Build Coastguard Worker _VSTD::make_heap(c.begin(), c.end(), comp); 645*58b9f456SAndroid Build Coastguard Worker} 646*58b9f456SAndroid Build Coastguard Worker 647*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 648*58b9f456SAndroid Build Coastguard Worker 649*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 650*58b9f456SAndroid Build Coastguard Workertemplate <class _Alloc> 651*58b9f456SAndroid Build Coastguard Workerinline 652*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(const _Alloc& __a, 653*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 654*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type*) 655*58b9f456SAndroid Build Coastguard Worker : c(__a) 656*58b9f456SAndroid Build Coastguard Worker{ 657*58b9f456SAndroid Build Coastguard Worker} 658*58b9f456SAndroid Build Coastguard Worker 659*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 660*58b9f456SAndroid Build Coastguard Workertemplate <class _Alloc> 661*58b9f456SAndroid Build Coastguard Workerinline 662*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(const value_compare& __comp, 663*58b9f456SAndroid Build Coastguard Worker const _Alloc& __a, 664*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 665*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type*) 666*58b9f456SAndroid Build Coastguard Worker : c(__a), 667*58b9f456SAndroid Build Coastguard Worker comp(__comp) 668*58b9f456SAndroid Build Coastguard Worker{ 669*58b9f456SAndroid Build Coastguard Worker} 670*58b9f456SAndroid Build Coastguard Worker 671*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 672*58b9f456SAndroid Build Coastguard Workertemplate <class _Alloc> 673*58b9f456SAndroid Build Coastguard Workerinline 674*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(const value_compare& __comp, 675*58b9f456SAndroid Build Coastguard Worker const container_type& __c, 676*58b9f456SAndroid Build Coastguard Worker const _Alloc& __a, 677*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 678*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type*) 679*58b9f456SAndroid Build Coastguard Worker : c(__c, __a), 680*58b9f456SAndroid Build Coastguard Worker comp(__comp) 681*58b9f456SAndroid Build Coastguard Worker{ 682*58b9f456SAndroid Build Coastguard Worker _VSTD::make_heap(c.begin(), c.end(), comp); 683*58b9f456SAndroid Build Coastguard Worker} 684*58b9f456SAndroid Build Coastguard Worker 685*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 686*58b9f456SAndroid Build Coastguard Workertemplate <class _Alloc> 687*58b9f456SAndroid Build Coastguard Workerinline 688*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(const priority_queue& __q, 689*58b9f456SAndroid Build Coastguard Worker const _Alloc& __a, 690*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 691*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type*) 692*58b9f456SAndroid Build Coastguard Worker : c(__q.c, __a), 693*58b9f456SAndroid Build Coastguard Worker comp(__q.comp) 694*58b9f456SAndroid Build Coastguard Worker{ 695*58b9f456SAndroid Build Coastguard Worker _VSTD::make_heap(c.begin(), c.end(), comp); 696*58b9f456SAndroid Build Coastguard Worker} 697*58b9f456SAndroid Build Coastguard Worker 698*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 699*58b9f456SAndroid Build Coastguard Worker 700*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 701*58b9f456SAndroid Build Coastguard Workertemplate <class _Alloc> 702*58b9f456SAndroid Build Coastguard Workerinline 703*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(const value_compare& __comp, 704*58b9f456SAndroid Build Coastguard Worker container_type&& __c, 705*58b9f456SAndroid Build Coastguard Worker const _Alloc& __a, 706*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 707*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type*) 708*58b9f456SAndroid Build Coastguard Worker : c(_VSTD::move(__c), __a), 709*58b9f456SAndroid Build Coastguard Worker comp(__comp) 710*58b9f456SAndroid Build Coastguard Worker{ 711*58b9f456SAndroid Build Coastguard Worker _VSTD::make_heap(c.begin(), c.end(), comp); 712*58b9f456SAndroid Build Coastguard Worker} 713*58b9f456SAndroid Build Coastguard Worker 714*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 715*58b9f456SAndroid Build Coastguard Workertemplate <class _Alloc> 716*58b9f456SAndroid Build Coastguard Workerinline 717*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::priority_queue(priority_queue&& __q, 718*58b9f456SAndroid Build Coastguard Worker const _Alloc& __a, 719*58b9f456SAndroid Build Coastguard Worker typename enable_if<uses_allocator<container_type, 720*58b9f456SAndroid Build Coastguard Worker _Alloc>::value>::type*) 721*58b9f456SAndroid Build Coastguard Worker : c(_VSTD::move(__q.c), __a), 722*58b9f456SAndroid Build Coastguard Worker comp(_VSTD::move(__q.comp)) 723*58b9f456SAndroid Build Coastguard Worker{ 724*58b9f456SAndroid Build Coastguard Worker _VSTD::make_heap(c.begin(), c.end(), comp); 725*58b9f456SAndroid Build Coastguard Worker} 726*58b9f456SAndroid Build Coastguard Worker 727*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 728*58b9f456SAndroid Build Coastguard Worker 729*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 730*58b9f456SAndroid Build Coastguard Workerinline 731*58b9f456SAndroid Build Coastguard Workervoid 732*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::push(const value_type& __v) 733*58b9f456SAndroid Build Coastguard Worker{ 734*58b9f456SAndroid Build Coastguard Worker c.push_back(__v); 735*58b9f456SAndroid Build Coastguard Worker _VSTD::push_heap(c.begin(), c.end(), comp); 736*58b9f456SAndroid Build Coastguard Worker} 737*58b9f456SAndroid Build Coastguard Worker 738*58b9f456SAndroid Build Coastguard Worker#ifndef _LIBCPP_CXX03_LANG 739*58b9f456SAndroid Build Coastguard Worker 740*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 741*58b9f456SAndroid Build Coastguard Workerinline 742*58b9f456SAndroid Build Coastguard Workervoid 743*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::push(value_type&& __v) 744*58b9f456SAndroid Build Coastguard Worker{ 745*58b9f456SAndroid Build Coastguard Worker c.push_back(_VSTD::move(__v)); 746*58b9f456SAndroid Build Coastguard Worker _VSTD::push_heap(c.begin(), c.end(), comp); 747*58b9f456SAndroid Build Coastguard Worker} 748*58b9f456SAndroid Build Coastguard Worker 749*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 750*58b9f456SAndroid Build Coastguard Workertemplate <class... _Args> 751*58b9f456SAndroid Build Coastguard Workerinline 752*58b9f456SAndroid Build Coastguard Workervoid 753*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::emplace(_Args&&... __args) 754*58b9f456SAndroid Build Coastguard Worker{ 755*58b9f456SAndroid Build Coastguard Worker c.emplace_back(_VSTD::forward<_Args>(__args)...); 756*58b9f456SAndroid Build Coastguard Worker _VSTD::push_heap(c.begin(), c.end(), comp); 757*58b9f456SAndroid Build Coastguard Worker} 758*58b9f456SAndroid Build Coastguard Worker 759*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_CXX03_LANG 760*58b9f456SAndroid Build Coastguard Worker 761*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 762*58b9f456SAndroid Build Coastguard Workerinline 763*58b9f456SAndroid Build Coastguard Workervoid 764*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::pop() 765*58b9f456SAndroid Build Coastguard Worker{ 766*58b9f456SAndroid Build Coastguard Worker _VSTD::pop_heap(c.begin(), c.end(), comp); 767*58b9f456SAndroid Build Coastguard Worker c.pop_back(); 768*58b9f456SAndroid Build Coastguard Worker} 769*58b9f456SAndroid Build Coastguard Worker 770*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 771*58b9f456SAndroid Build Coastguard Workerinline 772*58b9f456SAndroid Build Coastguard Workervoid 773*58b9f456SAndroid Build Coastguard Workerpriority_queue<_Tp, _Container, _Compare>::swap(priority_queue& __q) 774*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(__is_nothrow_swappable<container_type>::value && 775*58b9f456SAndroid Build Coastguard Worker __is_nothrow_swappable<value_compare>::value) 776*58b9f456SAndroid Build Coastguard Worker{ 777*58b9f456SAndroid Build Coastguard Worker using _VSTD::swap; 778*58b9f456SAndroid Build Coastguard Worker swap(c, __q.c); 779*58b9f456SAndroid Build Coastguard Worker swap(comp, __q.comp); 780*58b9f456SAndroid Build Coastguard Worker} 781*58b9f456SAndroid Build Coastguard Worker 782*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare> 783*58b9f456SAndroid Build Coastguard Workerinline _LIBCPP_INLINE_VISIBILITY 784*58b9f456SAndroid Build Coastguard Workertypename enable_if< 785*58b9f456SAndroid Build Coastguard Worker __is_swappable<_Container>::value 786*58b9f456SAndroid Build Coastguard Worker && __is_swappable<_Compare>::value, 787*58b9f456SAndroid Build Coastguard Worker void 788*58b9f456SAndroid Build Coastguard Worker>::type 789*58b9f456SAndroid Build Coastguard Workerswap(priority_queue<_Tp, _Container, _Compare>& __x, 790*58b9f456SAndroid Build Coastguard Worker priority_queue<_Tp, _Container, _Compare>& __y) 791*58b9f456SAndroid Build Coastguard Worker _NOEXCEPT_(_NOEXCEPT_(__x.swap(__y))) 792*58b9f456SAndroid Build Coastguard Worker{ 793*58b9f456SAndroid Build Coastguard Worker __x.swap(__y); 794*58b9f456SAndroid Build Coastguard Worker} 795*58b9f456SAndroid Build Coastguard Worker 796*58b9f456SAndroid Build Coastguard Workertemplate <class _Tp, class _Container, class _Compare, class _Alloc> 797*58b9f456SAndroid Build Coastguard Workerstruct _LIBCPP_TEMPLATE_VIS uses_allocator<priority_queue<_Tp, _Container, _Compare>, _Alloc> 798*58b9f456SAndroid Build Coastguard Worker : public uses_allocator<_Container, _Alloc> 799*58b9f456SAndroid Build Coastguard Worker{ 800*58b9f456SAndroid Build Coastguard Worker}; 801*58b9f456SAndroid Build Coastguard Worker 802*58b9f456SAndroid Build Coastguard Worker_LIBCPP_END_NAMESPACE_STD 803*58b9f456SAndroid Build Coastguard Worker 804*58b9f456SAndroid Build Coastguard Worker#endif // _LIBCPP_QUEUE 805