gpt4 book ai didi

c++ - 随机访问优先级队列

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:35:56 24 4
gpt4 key购买 nike

继续 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() 方法显示界面不够清晰 - 您为什么要像那样简单地公开实现细节?
  • 最重要的是:为什么要“随机访问优先级队列”?

关于c++ - 随机访问优先级队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4422933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com