Verwenden Sie priority_queue::(Push-, Pop-, Empty-, Top-) STL-Funktionen in Visual C++
In diesem Artikel können Sie das Problem beheben, in dem die Verwendung der,,, priority_queue::push
priority_queue::pop
priority_queue::empty
priority_queue::top
und priority_queue::size
STL-Funktionen in Visual C++.
Original Version des Produkts: Visual C++
Ursprüngliche KB-Nummer: 157623
Zusammenfassung
Der folgende Beispielcode veranschaulicht die Verwendung der priority_queue::push
,, priority_queue::pop
, priority_queue::empty
priority_queue::top
und STL- priority_queue::size
Funktionen in Visual C++.
Der priority_queue
Adapter hält Objekte des Typs, der durch den Typ des von der unterstützten Containers definiert ist priority_queue
. Die beiden unterstützten Container sind die vector
und die deque
. Objekte werden von eingefügt push()
und von entfernt pop()
. top()
Gibt das oberste Element in der zurück priority_queue
.
Da Adapter keine Iteration unterstützen, priority_queue
hat a keinen zugeordneten Iterator.
Priority_queue
ermöglicht die Verwaltung einer sortierten Auflistung von Elementen, die durch eine zugeordnete Vergleichsfunktion bestimmt werden, beispielsweise Less, größer usw. Das oberste Element wird daher basierend auf der ausgewählten Funktion zum Kandidaten der Wahl, am niedrigsten oder am höchsten.
Erforderliche Kopfzeile
<queue>
Prototyp
priority_queue::push();
priority_queue::pop();
priority_queue::empty();
priority_queue::top();
priority_queue::size();
Hinweis
Die Namen der Klassen/Parameter 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 die priority_queue
Implementierung using deque
und vector
Containers.
//////////////////////////////////////////////////////////////////////
// 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