使用向量C ++的双精度优先级队列

时间:2014-11-21 14:01:10

标签: c++ vector priority-queue

我需要使用STL向量编写优先级队列的代码

我被分配了使用vector实现双精度优先级队列的任务 以前我使用list实现了一个队列,这非常简单,因为list提供了我需要的所有功能。 除非我遗漏了优先级队列不是这样的东西?

cplusplus.com上优先级队列的引用说明:一次调用底层容器(vector)上的push_back和一次调用push_heap(我假设算法),我不知道如何实现push_heap和pop_heap或是否我需要一点。

该作业专门要求载体

我正在寻找一个很好的实施/解释。

到目前为止,这是mo代码:

的.cpp

#include"PriorityQueue.h"
#include <algorithm>

PriorityQueue::PriorityQueue(){

}
void PriorityQueue::push(double val){
    s.push_back(val);

}
void PriorityQueue::pop(){


}
double PriorityQueue::front() const{
    return s.front();
}
double PriorityQueue::back() const{
    return s.back();
}

·H

#ifndef PRIORITYQUEUE_H
#define PRIORITYQUEUE_H
#include <vector>
using std::vector;
class PriorityQueue{
public:
    PriorityQueue();
    void push(double val);
    void pop();
    double front() const;
    double back() const;
private:
    vector<double> s;
};
#endif // !PRIORITYQUEUE_H

如果我需要编写代码来跟踪顶部和底部索引,我可能会缺少基本功能,我只是有点卡住而且没有时间浪费尝试不同的解决方案。

1 个答案:

答案 0 :(得分:4)

您只需使用std::vector并使用push_backstd::push_heap标题中的algorithm一起添加项目。