我需要帮助在c ++中创建优先级队列

时间:2014-05-18 04:27:56

标签: c++ templates queue priority-queue

我正在尝试创建一个优先级队列程序,其中包含一个字符串作为其数据,并将该数字作为优先级in,enqueue(“Hello”,3); 以下是我到目前为止的情况,但我很难将所有内容放在一起,对我应该采取的不同做法或帮助我编写程序的任何帮助都将不胜感激。

我相信我应该将队列存储在一个向量中,并以某种方式对内部数据进行排序以匹配相应的优先级。

#include <iostream>
#include <string>
#include <vector>

using namespace std;


template <class T1, class T2>
class PriQueue
{
public:
//PriQueue();
void enqueue(T1 str, T2 pri); //Adds to queue
void dequeue(T1 str, T2 pri); //Deletes from queue
void peek(T1 str, T2 pri); //Prints the the first in queue
void size(T1 size); //Prints how many in queue

T1 printQ();

private:
T1 s;
T2 p;

};

template <class T1, class T2>
void PriQueue<T1, T2>::enqueue(T1 str, T2 pri) //Adding an element to the queue
{


this->s = str;
this->p = pri;

}

template <class T1, class T2>
void PriQueue<T1, T2>::dequeue(T1 str, T2 pri) //Removing an element from the front of the queue
{


}

template <class T1, class T2>
void PriQueue<T1, T2>::peek(T1 str, T2 pri) //Returning a value at front of the queue (NOT removing it)
{


}

template <class T1, class T2>
void PriQueue<T1, T2>::size(T1 size) //Returning the number of items in the queue.
{


}



using namespace std;


int main()
{

PriQueue<string, int> que;

que.enqueue("Hello", 3);
que.enqueue("Bye", 2);
que.enqueue("No", 5);

cout << que.printQ() << endl;


return 0;
}

1 个答案:

答案 0 :(得分:2)

我会指导你进行std :: priority_queue的cppreference。这应该有助于我思考。除了维基百科上的优先级队列,它还提供了很好的实现细分。