c – 随机访问优先级队列
作者:互联网
我正在使用随机访问实现改进的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