template <typename Key, typename Element, typename Comp> class SortedSeqPriorityQueue { protected: // typename shortcuts typedef Item<Key, Element> Item; // (key, element) pair typedef NodeSequence<Item> Sequence; // a sequence of items public: typedef Sequence::Position Position; // position in sequence protected: // local utilities const Key& key(const Position& p) const // position's key { return p.element().key(); } Element& element(const Position& p) // position's element { Position t = p; return t.element().element(); } private: // member data Sequence S; // sorted sequence Comp comp; // comparator public: SortedSeqPriorityQueue() : S(), comp() { } // default constructor int size() const // number of items { return S.size(); } bool isEmpty() const // is the queue empty? { return S.isEmpty(); } // ...