0
데이터를 문자열로, 우선 순위를 번호로 사용하는 우선 순위 대기열 프로그램을 작성하려고합니다. enqueue ("Hello", 3); 아래에 제가 지금까지 가지고있는 것이지만 모든 것을 함께 모으는 데 어려움을 겪고 있습니다. 제가해야 할 일에 대한 도움이나 프로그램 작성을 도와 주시면 큰 도움이 될 것입니다.우선 순위 큐를 C++로 생성하는 데 도움이 필요합니다.
나는 벡터에 큐를 저장하고 어떻게 든 데이터를 해당 우선 순위 수준과 일치하도록 정렬해야한다고 생각한다.
#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;
}
커스텀'comparitor'와 함께 [''std :: priority_queue'' (http://www.cplusplus.com/reference/queue/priority_queue/)를 사용해서 간단하게 전달해야합니다 ''std :: pair''를 데이터 형으로 사용한다. 당신의 임무가 처음부터 실제로 구현하는 것이 아니라면, 나는 [heaps] (http://en.wikipedia.org/wiki/Heap_ (data_structure))를 연구 할 것을 적극 권장한다. –
aruisdante
채우기에 너무 많은 간격이있다. 당신의 코드. 나는 그저 튀어 나온 한 가지 점을 지적하고 싶다. 모든 함수에서'pri'의 타입은'T'가 아닌'int'이어야합니다. –
@RSahu 이유가 무엇입니까? 'pri' 또한'double'이 될 수 있고 나는 그것이 틀이되는 것으로 잘못 본 것을 보지 못합니다. – nwp