其他分享
首页 > 其他分享> > c – 随机访问优先级队列

c – 随机访问优先级队列

作者:互联网

持续List to priority queue

我正在使用随机访问实现改进的priority_queue.

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_;
};

我采取正确的方式吗?

>修复了一元构造函数.
>改进代码.

解决方法:

对我来说看起来不那么好:

>一元构造函数应该通过const引用来获取参数.
>赋值运算符不检查自我赋值.
> getContainer()方法显示界面缺乏清晰度 – 为什么你只是简单地公开这样的实现细节?
>最重要的是:为什么你想要一个“随机访问优先级队列”?

标签:random-access,c,priority-queue
来源: https://codeday.me/bug/20191008/1874526.html