2014-05-18 3 views
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; 
} 
+2

커스텀'comparitor'와 함께 [''std :: priority_queue'' (http://www.cplusplus.com/reference/queue/priority_queue/)를 사용해서 간단하게 전달해야합니다 ''std :: pair ''를 데이터 형으로 사용한다. 당신의 임무가 처음부터 실제로 구현하는 것이 아니라면, 나는 [heaps] (http://en.wikipedia.org/wiki/Heap_ (data_structure))를 연구 할 것을 적극 권장한다. – aruisdante

+0

채우기에 너무 많은 간격이있다. 당신의 코드. 나는 그저 튀어 나온 한 가지 점을 지적하고 싶다. 모든 함수에서'pri'의 타입은'T'가 아닌'int'이어야합니다. –

+0

@RSahu 이유가 무엇입니까? 'pri' 또한'double'이 될 수 있고 나는 그것이 틀이되는 것으로 잘못 본 것을 보지 못합니다. – nwp

답변

2

std :: priority_queue에 대한 cppreference로 안내합니다. 그것은 내가 생각하는 데 도움이 될 것입니다. wikipedia의 Priority Queue는 구현시 좋은 부분을 제공합니다.

관련 문제