Очередь с приоритетами (Priority queue)
Любая последовательность, с итератором произвольного доступа и поддерживающая операции front, push_back и pop_front, может использоваться для модификации priority_queue. В частности, могут использоваться vector и deque.
template <class Container, class Compare = less<Container::value_type> > class priority_queue { public: typedef Container::value_type value_type; typedef Container::size_type size_type; protected: Container c; Compare comp; public: priority_queue(const Compare& х = Compare()) : c(), comp(х) {} template <class InputIterator> priority_queue(InputIterator first, InputIterator last, const Compare& х = Compare()) : c(first, last), comp(x) { make_heap(c.begin(), с.end(), comp); } bool empty() const { return c.empty(); } size_type size() const { return c.size(); } const value_type& top() const { return c.front(); } void push(const value_type& х) { c.push_back(х); push_heap(c.begin(), c.end(), comp); } void pop() { pop_heap(c.begin(), c.end(), comp); с.рор_bасk(); } }; // Никакое равенство не обеспечивается