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_queuepermite 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