Continued Priority Queue List
I am implementing an improved priority_queue with random access.
template <class T, class Container = std::vector<T> > class Heap { public: Heap() {} Heap(const Container& container) { container_ = container; std::make_heap(container_.begin(), container_.end()); } Heap<T, Container>& operator=(const Heap<T, Container>& heap) { if (this != &heap) container_ = heap.container_; return *this; } void push(const T& x) { container_.push_back(x); std::push_heap(container_.begin(), container_.end()); } void pop() { std::pop_heap(container_.begin(), container_.end()); container_.pop_back(); } const T& top() { return container_.front(); } const Container& getContainer() const { return container_; } T& operator[](size_t n) { return container_[n]; } typename Container::const_iterator begin() const { return container_.begin(); } typename Container::const_iterator end() const { return container_.end(); } size_t size() const { return container_.size(); } T& base() { return container_.back(); } Container::iterator erase(Container::iterator position) { return container_.erase(position); } private: Container container_; };
Am I taking the right paths?
- Unary constructor fixed.
- Improved code.
c ++ priority-queue random-access
Renato rodrigues
source share