Any class prio_impl that provides the following operations can be used as actual implementation parameter for the _priority_queue< K,I,prio_impl> data type (cf. section Priority Queues).
typedef ... prio_impl_item; class prio_impl $\{$ virtual int cmp(GenPtr, GenPtr) const = 0; virtual int int_type() const = 0; virtual void clear_key(GenPtr&) const = 0; virtual void clear_inf(GenPtr&) const = 0; virtual void copy_key(GenPtr&) const = 0; virtual void copy_inf(GenPtr&) const = 0; public: prio_impl(); prio_impl(int); prio_impl(int,int); prio_impl(const prio_impl&); virtual ~prio_impl(); prio_impl& operator=(const prio_impl&); prio_impl_item insert(GenPtr,GenPtr); prio_impl_item find_min() \ const; prio_impl_item first_item() const; prio_impl_item next_item(prio_impl_item) const; prio_impl_item item(void* p) const { return prio_impl_item(p); } GenPtr key(prio_impl_item) const; GenPtr inf(prio_impl_item) const; void del_min(); void del_item(prio_impl_item); void decrease_key(prio_impl_item,GenPtr); void change_inf(prio_impl_item,GenPtr); void clear(); int size() const; };