2010-07-15 5 views
0

Par exemple, nous avons priority_queue<int> s; qui contient des éléments. Quelle sera la forme correcte du code ci-dessous:Comment utiliser une file d'attente prioritaire en C++?

while (!s.empty()) { 
    int t=s.pop();// this does not retrieve the value from the queue 
    cout<<t<<endl; 
} 
+1

Qu'est-ce ??????????? –

+0

Que voulez-vous dire par "cela ne fonctionne pas"? Et comment est défini? –

+1

Je ne suis pas sûr de ce que vous demandez. Mais les files d'attente ont généralement une sémantique de file ou de liste (First in First Out), en utilisant des méthodes comme "enqueue/dequeue" ou "offer/poll" au lieu de push/pop, qui sont des sémantiques de pile (Last in first out). (Certaines files d'attente prioritaires sont modélisées à l'aide de piles, cependant, il serait utile de savoir ce que vous essayez de faire). – JasonTrue

Répondre

7

Reportez-vous à la documentation et vous verrez pop n'a pas de valeur de retour. Il y a various reasons for this, mais c'est un autre sujet.

La forme correcte est:

while (!s.empty()) 
{ 
    int t = s.top(); 
    s.pop(); 

    cout << t << endl; 
} 

Ou:

for (; !s.empty(); s.pop()) 
{ 
    cout << s.top(); << endl; 
} 
Questions connexes