Usar priority_queue::(funciones STL Push, pop, Empty, Top) en Visual C++
Este artículo ayuda a resolver el problema en el que se explica cómo usar las priority_queue::push
priority_queue::pop
funciones,,, priority_queue::empty
priority_queue::top
y priority_queue::size
STL en Visual C++.
Versión del producto original: Visual C++
Número de KB original: 157623
Resumen
En el código de ejemplo siguiente se muestra cómo usar priority_queue::push
las priority_queue::pop
funciones,,, 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 admitido por el priority_queue
. Los dos contenedores admitidos son el vector
y el deque
. Los objetos son insertados push()
y eliminados por pop()
. top()
Devuelve el elemento superior del priority_queue
.
Como los adaptadores no admiten la iteración, un no priority_queue
tiene ningún iterador asociado.
Priority_queue
permite mantener una colección ordenada de elementos determinada por una función de comparación asociada, como menor, mayor, etc. Por lo tanto, el elemento superior se convierte en el candidato de elección, el menor o el mayor en función de la función elegida.
Encabezado obligatorio
<queue>
Forme
priority_queue::push();
priority_queue::pop();
priority_queue::empty();
priority_queue::top();
priority_queue::size();
Nota
Los nombres de la clase o del parámetro del prototipo podrían no coincidir con la versión del archivo de encabezado. Las PYME se han modificado para mejorar la legibilidad.
Código de ejemplo
El ejemplo muestra la priority_queue
implementación deque
mediante vector
contenedores y.
//////////////////////////////////////////////////////////////////////
// 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();
}
}
Resultado del programa:
4
size of q is:4
42
49
100
201
m
size of p is:5
m
h
d
c
a