Compartir a través de


Uso de funciones STL de priority_queue::(push, pop, empty, top) en Visual C++

Este artículo le ayuda a resolver el problema por el que se usa las priority_queue::pushfunciones , priority_queue::pop, priority_queue::empty, priority_queue::topy 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::pushfunciones , priority_queue::pop, priority_queue::empty, priority_queue::topy 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 vectordeque. 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_queuela 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