Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo le ayuda a resolver el problema por el que se usa las priority_queue::push
funciones , priority_queue::pop
, priority_queue::empty
, priority_queue::top
y priority_queue::size
STL en Visual C++.
Versión original del producto: Visual C++
Número de KB original: 157623
Resumen
En el código de ejemplo siguiente se muestra cómo usar las priority_queue::push
funciones , priority_queue::pop
, priority_queue::empty
, priority_queue::top
y priority_queue::size
STL en Visual C++.
El priority_queue
adaptador contiene objetos del tipo definido por el tipo de contenedor compatible con priority_queue
. Los dos contenedores admitidos son y vector
deque
. Los objetos se insertan push()
y quitan mediante pop()
.
top()
devuelve el elemento superior de .priority_queue
Dado que los adaptadores no admiten iteración, un priority_queue
no tiene ningún iterador asociado.
Priority_queue
permite mantener una colección ordenada de elementos determinados por una función de comparador asociada, como menos, mayor, etc. Por lo tanto, el elemento superior se convierte en el candidato elegido, más bajo o más alto en función de la función elegida.
Encabezado obligatorio
<queue>
Prototipo
priority_queue::push();
priority_queue::pop();
priority_queue::empty();
priority_queue::top();
priority_queue::size();
Nota:
Es posible que los nombres de clase o parámetro del prototipo no coincidan con la versión del archivo de encabezado. Sme se ha modificado para mejorar la legibilidad.
Código de ejemplo
En el ejemplo se muestra priority_queue
la implementación mediante deque
contenedores y vector
.
//////////////////////////////////////////////////////////////////////
// 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();
}
}
Salida del programa:
4
size of q is:4
42
49
100
201
m
size of p is:5
m
h
d
c
a