Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Artikel hilft Ihnen, das Problem zu beheben, bei dem die Funktionen , priority_queue::pop
, , priority_queue::empty
, priority_queue::top
und priority_queue::size
STL in Visual C++ verwendet priority_queue::push
werden.
Originalproduktversion: Visual C++
Ursprüngliche KB-Nummer: 157623
Zusammenfassung
Der folgende Beispielcode veranschaulicht, wie die priority_queue::push
Funktionen , priority_queue::pop
, , priority_queue::empty
, priority_queue::top
und priority_queue::size
STL in Visual C++ verwendet werden.
Der priority_queue
Adapter enthält Objekte des Typs, der durch den Typ des containers definiert wird, der von der priority_queue
. Die beiden unterstützten Container sind die vector
und die deque
. Objekte werden von push()
und entfernt von pop()
. top()
gibt das oberste Element in der priority_queue
.
Da Adapter die Iteration nicht unterstützen, ist kein priority_queue
Iterator zugeordnet.
Priority_queue
ermöglicht es Ihnen, eine sortierte Sammlung von Elementen beizubehalten, die von einer zugeordneten Vergleichsfunktion bestimmt werden, z. B. weniger, größer usw. Das oberste Element wird daher basierend auf der gewählten Funktion zum Kandidaten der Wahl, am niedrigsten oder höchsten.
Erforderlicher Header
<queue>
Prototyp
priority_queue::push();
priority_queue::pop();
priority_queue::empty();
priority_queue::top();
priority_queue::size();
Notiz
Die Klassen-/Parameternamen im Prototyp stimmen möglicherweise nicht mit der Version in der Headerdatei überein. Kmu wurden geändert, um die Lesbarkeit zu verbessern.
Beispielcode
Das Beispiel zeigt priority_queue
die Implementierung mithilfe deque
und vector
Container.
//////////////////////////////////////////////////////////////////////
// Compile options needed: /GX
// <filename> : priority_queue.cpp
// Functions:
// priority_queue::push(), priority_queue::pop(),
// priority_queue::empty(), priority_queue::top(), queue::size()
// of Microsoft Product Support Services,
// Copyright (c) 1996 Microsoft Corporation. All rights reserved.
//////////////////////////////////////////////////////////////////////
#include <iostream>
#include <queue>
#include <deque>
#include <vector>
#include <functional>
using namespace std;
#if _MSC_VER > 1020 // if VC++ version is > 4.2
using namespace std; // std c++ libs implemented in std
#endif
// Using priority_queue with deque
// Use of function greater sorts the items in ascending order
typedef deque<int, allocator<int> > INTDQU;
typedef priority_queue<int,INTDQU, greater<int> > INTPRQUE;
// Using priority_queue with vector
// Use of function less sorts the items in descending order
typedef vector<char, allocator<char> > CHVECTOR;
typedef priority_queue<char,CHVECTOR,less<char> > CHPRQUE;
void main(void)
{
int size_q;
INTPRQUE q;
CHPRQUE p;
// Insert items in the priority_queue(uses deque)
q.push(42);
q.push(100);
q.push(49);
q.push(201);
// Output the item at the top using top()
cout << q.top() << endl;
// Output the size of priority_queue
size_q = q.size();
cout << "size of q is:" << size_q << endl;
// Output items in priority_queue using top()
// and use pop() to get to next item until
// priority_queue is empty
while (!q.empty())
{
cout << q.top() << endl;
q.pop();
}
// Insert items in the priority_queue(uses vector)
p.push('c');
p.push('a');
p.push('d');
p.push('m');
p.push('h');
// Output the item at the top using top()
cout << p.top() << endl;
// Output the size of priority_queue
size_q = p.size();
cout << "size of p is:" << size_q << endl;
// Output items in `priority_queue`using top()
// and use pop() to get to next item until
// `priority_queue`is empty
while (!p.empty())
{
cout << p.top() << endl;
p.pop();
}
}
Programmausgabe:
4
size of q is:4
42
49
100
201
m
size of p is:5
m
h
d
c
a