Compartilhar via


priority_queue (STL/CLR)

A classe de modelo descreve um objeto que controla uma sequência ordenada de tamanho variável de elementos que têm acesso limitado. Use o adaptador de contêiner priority_queue para gerenciar um contêiner subjacente como uma fila de prioridade.

Na descrição abaixo, GValue é o mesmo que Value, a menos que o último seja do tipo ref, caso em que seria Value^. Da mesma forma, GContainer é o mesmo que Container, a menos que este último seja um tipo ref, nesse caso ele seria Container^.

Sintaxe

template<typename Value,
    typename Container>
    ref class priority_queue
        System::ICloneable,
        Microsoft::VisualC::StlClr::IPriorityQueue<GValue, GContainer>
    { ..... };

Parâmetros

Valor
O tipo de um elemento na sequência controlada.

Contêiner
O tipo do contêiner subjacente.

Requisitos

Cabeçalho:<cliext/queue>

Namespace: cliext

Declarações

Definição de tipo Descrição
priority_queue::const_reference (STL/CLR) O tipo de uma referência de constante para um elemento.
priority_queue::container_type (STL/CLR) O tipo do contêiner subjacente.
priority_queue::difference_type (STL/CLR) O tipo de uma distância com sinal entre dois elementos.
priority_queue::generic_container (STL/CLR) O tipo de interface genérica para o adaptador de contêiner.
priority_queue::generic_value (STL/CLR) O tipo de um elemento para a interface genérica para o adaptador de contêiner.
priority_queue::reference (STL/CLR) O tipo de uma referência para um elemento.
priority_queue::size_type (STL/CLR) O tipo de uma distância com sinal entre dois elementos.
priority_queue::value_compare (STL/CLR) O delegado de ordenação para dois elementos.
priority_queue::value_type (STL/CLR) O tipo de um elemento.
Função membro Descrição
priority_queue::assign (STL/CLR) Substitui todos os elementos.
priority_queue::empty (STL/CLR) Testa se nenhum elemento está presente.
priority_queue::get_container (STL/CLR) Acessa o contêiner subjacente.
priority_queue::pop (STL/CLR) Remove o elemento de prioridade mais alta.
priority_queue::priority_queue (STL/CLR) Constrói um objeto contêiner.
priority_queue::push (STL/CLR) Adiciona um novo elemento.
priority_queue::size (STL/CLR) Conta o número de elementos.
priority_queue::top (STL/CLR) Acessa o elemento de prioridade mais alta.
priority_queue::to_array (STL/CLR) Copia a sequência controlada para uma nova matriz.
priority_queue::value_comp (STL/CLR) Copia o delegado de ordenação para dois elementos.
Propriedade Descrição
priority_queue::top_item (STL/CLR) Acessa o elemento de prioridade mais alta.
Operador Descrição
priority_queue::operator= (STL/CLR) Substitui a sequência controlada.

Interfaces

Interface Descrição
ICloneable Duplica um objeto.
IPriorityQueue<Value, Container> Mantenha o adaptador de contêiner genérico.

Comentários

O objeto aloca e libera armazenamento para a sequência que controla por meio de um contêiner subjacente, do tipo Container, que armazena elementos Value e cresce sob demanda. Ele mantém a sequência ordenada como um heap, com o elemento de prioridade mais alta (o elemento superior) prontamente acessível e removível. O objeto restringe o acesso ao enfileiramento de novos elementos e ao desenfileiramento apenas do elemento de prioridade mais alta, implementando uma fila de prioridade.

O objeto ordena a sequência que controla chamando um objeto delegado armazenado do tipo priority_queue::value_compare (STL/CLR). Você pode especificar o objeto delegado armazenado ao construir a priority_queue; se não especificar nenhum objeto delegado, o padrão será a comparação operator<(value_type, value_type). Esse objeto armazenado é acessado chamando a função membro priority_queue::value_comp (STL/CLR)().

Esse objeto delegado deve impor uma ordenação fraca estrita em valores do tipo priority_queue::value_type (STL/CLR). Isso significa que, para duas chaves X e Y quaisquer:

value_comp()(X, Y) retorna o mesmo resultado booliano em cada chamada.

Se value_comp()(X, Y) for verdadeiro, value_comp()(Y, X) precisará ser falso.

Se value_comp()(X, Y) for verdadeiro, X será ordenado antes de Y.

Se !value_comp()(X, Y) && !value_comp()(Y, X) for verdadeiro, então X e Y terão ordenação equivalente.

Para qualquer elemento X que preceder Y na sequência controlada, key_comp()(Y, X) será falso. (Para o objeto delegado padrão, as chaves nunca diminuem em valor.)

O elemento de prioridade mais alta é, portanto, um dos elementos que não é ordenado antes de qualquer outro elemento.

Como o contêiner subjacente mantém os elementos ordenados como um heap:

O contêiner deve dar suporte a iteradores de acesso aleatório.

Elementos com ordenação equivalente podem ser desenfileirados em uma ordem diferente da que foram enfileirados. (A ordenação não é estável.)

Assim, os candidatos para o contêiner subjacente incluem deque (STL/CLR) e vetor (STL/CLR).

Membros

priority_queue::assign (STL/CLR)

Substitui todos os elementos.

Sintaxe

void assign(priority_queue<Value, Container>% right);

Parâmetros

direita
Adaptador de contêiner a ser inserido.

Comentários

A função membro atribui right.get_container() ao contêiner subjacente. Use-a para alterar todo o conteúdo da fila.

Exemplo

// cliext_priority_queue_assign.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign a repetition of values
    Mypriority_queue c2;
    c2.assign(c1);
    for each (wchar_t elem in c2.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b
c a b

priority_queue::const_reference (STL/CLR)

O tipo de uma referência de constante para um elemento.

Sintaxe

typedef value_type% const_reference;

Comentários

O tipo descreve uma referência de constante para um elemento.

Exemplo

// cliext_priority_queue_const_reference.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display reversed contents " c b a"
    for (; !c1.empty(); c1.pop())
        {   // get a const reference to an element
        Mypriority_queue::const_reference cref = c1.top();
        System::Console::Write("{0} ", cref);
        }
    System::Console::WriteLine();
    return (0);
    }
c b a

priority_queue::container_type (STL/CLR)

O tipo do contêiner subjacente.

Sintaxe

typedef Container value_type;

Comentários

O tipo é um sinônimo do parâmetro de modeloContainer.

Exemplo

// cliext_priority_queue_container_type.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display contents " a b c" using container_type
    Mypriority_queue::container_type wc1 = c1.get_container();
    for each (wchar_t elem in wc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b

priority_queue::difference_type (STL/CLR)

Os tipos de uma distância com sinal entre dois elementos.

Sintaxe

typedef int difference_type;

Comentários

O tipo descreve uma contagem de elementos possivelmente negativa.

Exemplo

// cliext_priority_queue_difference_type.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // compute negative difference
    Mypriority_queue::difference_type diff = c1.size();
    c1.push(L'd');
    c1.push(L'e');
    diff -= c1.size();
    System::Console::WriteLine("pushing 2 = {0}", diff);

    // compute positive difference
    diff = c1.size();
    c1.pop();
    c1.pop();
    c1.pop();
    diff -= c1.size();
    System::Console::WriteLine("popping 3 = {0}", diff);
    return (0);
    }
c a b
pushing 2 = -2
popping 3 = 3

priority_queue::empty (STL/CLR)

Testa se nenhum elemento está presente.

Sintaxe

bool empty();

Comentários

A função membro retorna verdadeiro para uma sequência controlada vazia. É equivalente a priority_queue::size (STL/CLR)() == 0. Você pode usá-la para testar se a priority_queue está vazia.

Exemplo

// cliext_priority_queue_empty.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine("size() = {0}", c1.size());
    System::Console::WriteLine("empty() = {0}", c1.empty());

    // clear the container and reinspect
    c1.pop();
    c1.pop();
    c1.pop();
    System::Console::WriteLine("size() = {0}", c1.size());
    System::Console::WriteLine("empty() = {0}", c1.empty());
    return (0);
    }
c a b
size() = 3
empty() = False
size() = 0
empty() = True

priority_queue::generic_container (STL/CLR)

O tipo da interface genérica para o contêiner.

Sintaxe

typedef Microsoft::VisualC::StlClr::IPriorityQueue<Value>
    generic_container;

Comentários

O tipo descreve a interface genérica para essa classe de adaptador de contêiner de modelo.

Exemplo

// cliext_priority_queue_generic_container.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct a generic container
    Mypriority_queue::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1->get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // modify generic and display original
    gc1->push(L'd');
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // modify original and display generic
    c1.push(L'e');
    for each (wchar_t elem in gc1->get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b
c a b
d c b a
e d b a c

priority_queue::generic_value (STL/CLR)

O tipo de um elemento para uso com a interface genérica do contêiner.

Sintaxe

typedef GValue generic_value;

Comentários

O tipo descreve um objeto de tipo GValue que mostra o valor do elemento armazenado a ser usado com a interface genérica para essa classe de contêiner de modelo. (GValue é value_type ou value_type^, se value_type for um tipo de ref.)

Exemplo

// cliext_priority_queue_generic_value.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // get interface to container
    Mypriority_queue::generic_container^ gc1 = %c1;
    for each (wchar_t elem in gc1->get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // display in priority order using generic_value
    for (; !gc1->empty(); gc1->pop())
        {
        Mypriority_queue::generic_value elem = gc1->top();

        System::Console::Write("{0} ", elem);
        }
    System::Console::WriteLine();
    return (0);
    }
c a b
c a b
c b a

priority_queue::get_container (STL/CLR)

Acessa o contêiner subjacente.

Sintaxe

container_type get_container();

Comentários

A função membro retorna o contêiner subjacente. Use-a para ignorar as restrições impostas pelo wrapper de contêiner.

Exemplo

// cliext_priority_queue_get_container.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b

priority_queue::operator= (STL/CLR)

Substitui a sequência controlada.

Sintaxe

priority_queue <Value, Container>% operator=(priority_queue <Value, Container>% right);

Parâmetros

direita
Adaptador de contêiner a ser copiado.

Comentários

O operador membro copia a direita para o objeto e retorna *this. Use-o para substituir a sequência controlada por uma cópia da sequência controlada na direita.

Exemplo

// cliext_priority_queue_operator_as.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // assign to a new container
    Mypriority_queue c2;
    c2 = c1;
    for each (wchar_t elem in c2.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b
c a b

priority_queue::pop (STL/CLR)

Remove o elemento de prioridade mais alta.

Sintaxe

void pop();

Comentários

A função membro remove o elemento de prioridade mais alta da sequência controlada, que não deve estar vazia. Você a usa para reduzir a fila em um elemento na parte de trás.

Exemplo

// cliext_priority_queue_pop.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // pop an element and redisplay
    c1.pop();
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b
b a

priority_queue::priority_queue (STL/CLR)

Constrói um objeto adaptador de contêiner.

Sintaxe

priority_queue();
priority_queue(priority_queue<Value, Container> right);
priority_queue(priority_queue<Value, Container> right);
explicit priority_queue(value_compare^ pred);
priority_queue(value_compare^ pred, container_type% cont);
template<typename InIt>
    priority_queue(InIt first, InIt last);
template<typename InIt>
    priority_queue(InIt first, InIt last,
        value_compare^ pred);
template<typename InIt>
    priority_queue(InIt first, InIt last,
        value_compare^ pred, container_type% cont);

Parâmetros

cont
O contêiner a ser copiado.

first
Início do intervalo a ser inserido.

last
Fim do intervalo a ser inserido.

pred
Predicado de ordenação para a sequência controlada.

direita
Objeto ou intervalo a inserir.

Comentários

O construtor:

priority_queue();

cria um contêiner encapsulado vazio, com o predicado de ordenação padrão. Use para especificar uma sequência controlada inicial vazia, com o predicado de ordenação padrão.

O construtor:

priority_queue(priority_queue<Value, Container>% right);

cria um contêiner encapsulado que é uma cópia de right.get_container(), com o predicado de ordenação right.value_comp(). Use-o para especificar uma sequência controlada inicial que é uma cópia da sequência controlada pelo objeto de fila right, com o mesmo predicado de ordenação.

O construtor:

priority_queue(priority_queue<Value, Container>^ right);

cria um contêiner encapsulado que é uma cópia de right->get_container(), com o predicado de ordenação right->value_comp(). Use-o para especificar uma sequência controlada inicial que é uma cópia da sequência controlada pelo objeto de fila *right, com o mesmo predicado de ordenação.

O construtor:

explicit priority_queue(value_compare^ pred);

cria um contêiner encapsulado vazio, com o predicado de ordenação pred. Use-o para especificar uma sequência controlada inicial vazia, com o predicado de ordenação especificado.

O construtor:

priority_queue(value_compare^ pred, container_type cont);

cria um contêiner encapsulado vazio, com o predicado de ordenação pred e, em seguida, enfileira todos os elementos de cont. Use-o para especificar uma sequência controlada inicial de um contêiner existente, com o predicado de ordenação especificado.

O construtor:

template<typename InIt> priority_queue(InIt first, InIt last);

cria um contêiner encapsulado vazio, com o predicado de ordenação padrão e, em seguida, enfileira a sequência [first, last). Use-o para especificar uma sequência controlada inicial de uma sequência especificada, com o predicado de ordenação especificado.

O construtor:

template<typename InIt> priority_queue(InIt first, InIt last, value_compare^ pred);

cria um contêiner encapsulado vazio, com o predicado de ordenação pred e, em seguida, enfileira a sequência [first, last). Use-o para especificar uma sequência controlada inicial de uma sequência especificada, com o predicado de ordenação especificado.

O construtor:

template<typename InIt> priority_queue(InIt first, InIt last, value_compare^ pred, container_type% cont);

cria um contêiner encapsulado vazio, com o predicado de ordenação pred e, em seguida, enfileira todos os elementos de cont mais a sequência [first, last). Use-o para especificar uma sequência controlada inicial de um contêiner existente e de uma sequência especificada, com o predicado de ordenação especificado.

Exemplo

// cliext_priority_queue_construct.cpp
// compile with: /clr
#include <cliext/queue>
#include <cliext/deque>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
typedef cliext::deque<wchar_t> Mydeque;
int main()
    {
// construct an empty container
    Mypriority_queue c1;
    Mypriority_queue::container_type^ wc1 = c1.get_container();
    System::Console::WriteLine("size() = {0}", c1.size());

    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');
    for each (wchar_t elem in wc1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an ordering rule
    Mypriority_queue c2 = cliext::greater<wchar_t>();
    System::Console::WriteLine("size() = {0}", c2.size());

    for each (wchar_t elem in wc1)
        c2.push(elem);
    for each (wchar_t elem in c2.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an ordering rule by copying an underlying container
    Mypriority_queue c2x =
        gcnew Mypriority_queue(cliext::greater<wchar_t>(), *wc1);
   for each (wchar_t elem in c2x.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an iterator range
    Mypriority_queue c3(wc1->begin(), wc1->end());
    for each (wchar_t elem in c3.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an iterator range and an ordering rule
    Mypriority_queue c4(wc1->begin(), wc1->end(),
        cliext::greater<wchar_t>());
    for each (wchar_t elem in c4.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an iterator range, another container, and an ordering rule
    Mypriority_queue c5(wc1->begin(), wc1->end(),
        cliext::greater<wchar_t>(), *wc1);
    for each (wchar_t elem in c5.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct from a generic container
    Mypriority_queue c6(c3);
    for each (wchar_t elem in c6.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct by copying another container
    Mypriority_queue c7(%c3);
    for each (wchar_t elem in c7.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // construct with an ordering rule, by copying an underlying container
    Mypriority_queue c8 =
        gcnew Mypriority_queue(cliext::greater<wchar_t>(), *wc1);
    for each (wchar_t elem in c8.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    return (0);
    }
size() = 0
c a b
size() = 0
a c b
a c b
c a b
a c b
a a b c c b
c a b
c a b
a c b

priority_queue::push (STL/CLR)

Adiciona um novo elemento.

Sintaxe

void push(value_type val);

Comentários

A função membro insere um elemento com valor val na sequência controlada e a reordena para manter a disciplina de heap. Você a usa para adicionar outro elemento à fila.

Exemplo

// cliext_priority_queue_push.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b

priority_queue::reference (STL/CLR)

O tipo de uma referência para um elemento.

Sintaxe

typedef value_type% reference;

Comentários

O tipo descreve uma referência a um elemento.

Exemplo

// cliext_priority_queue_reference.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // modify top of priority_queue and redisplay
    Mypriority_queue::reference ref = c1.top();
    ref = L'x';
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b
x a b

priority_queue::size (STL/CLR)

Conta o número de elementos.

Sintaxe

size_type size();

Comentários

A função membro retorna o comprimento da sequência controlada. Use para determinar o número de elementos que estão na sequência controlada no momento. Se sua preocupação é apenas se a sequência tem tamanho diferente de zero, confira priority_queue::empty (STL/CLR)().

Exemplo

// cliext_priority_queue_size.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    System::Console::WriteLine("size() = {0} starting with 3", c1.size());

    // pop an item and reinspect
    c1.pop();
    System::Console::WriteLine("size() = {0} after popping", c1.size());

    // add two elements and reinspect
    c1.push(L'a');
    c1.push(L'b');
    System::Console::WriteLine("size() = {0} after adding 2", c1.size());
    return (0);
    }
c a b
size() = 3 starting with 3
size() = 2 after popping
size() = 4 after adding 2

priority_queue::size_type (STL/CLR)

O tipo de uma distância com sinal entre dois elementos.

Sintaxe

typedef int size_type;

Comentários

O tipo descreve uma contagem de elementos não negativos.

Exemplo

// cliext_priority_queue_size_type.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // compute positive difference
    Mypriority_queue::size_type diff = c1.size();
    c1.pop();
    c1.pop();
    diff -= c1.size();
    System::Console::WriteLine("size difference = {0}", diff);
    return (0);
    }
c a b
size difference = 2

priority_queue::to_array (STL/CLR)

Copia a sequência controlada para uma nova matriz.

Sintaxe

cli::array<Value>^ to_array();

Comentários

A função membro retorna uma matriz que contém a sequência controlada. Use para obter uma cópia da sequência controlada em formato de matriz.

Exemplo

// cliext_priority_queue_to_array.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // copy the container and modify it
    cli::array<wchar_t>^ a1 = c1.to_array();

    c1.push(L'd');
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // display the earlier array copy
    for each (wchar_t elem in a1)
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
d c b a
c a b

priority_queue::top (STL/CLR)

Acessa o elemento de prioridade mais alta.

Sintaxe

reference top();

Comentários

A função membro retorna uma referência para o elemento superior (de prioridade mais alta) da sequência controlada, que não pode ser vazio. Use-o para acessar o elemento de prioridade mais alta, quando souber que ele existe.

Exemplo

// cliext_priority_queue_top.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect last item
    System::Console::WriteLine("top() = {0}", c1.top());

    // alter last item and reinspect
    c1.top() = L'x';
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }

priority_queue::top_item (STL/CLR)

Acessa o elemento de prioridade mais alta.

Sintaxe

property value_type back_item;

Comentários

A propriedade acessa o elemento superior (de prioridade mais alta) da sequência controlada, que deve ser não vazio. Use-a para ler ou gravar o elemento de prioridade mais alta, quando souber que ele existe.

Exemplo

// cliext_priority_queue_top_item.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display initial contents " a b c"
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();

    // inspect last item
    System::Console::WriteLine("top_item = {0}", c1.top_item);

    // alter last item and reinspect
    c1.top_item = L'x';
    for each (wchar_t elem in c1.get_container())
        System::Console::Write("{0} ", elem);
    System::Console::WriteLine();
    return (0);
    }
c a b
top_item = c
x a b

priority_queue::value_comp (STL/CLR)

Copia o delegado de ordenação para dois elementos.

Sintaxe

value_compare^ value_comp();

Comentários

A função membro retorna o delegado de ordenação usado para ordenar a sequência controlada. Use-o para comparar dois valores.

Exemplo

// cliext_priority_queue_value_comp.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    Mypriority_queue::value_compare^ vcomp = c1.value_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        vcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        vcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        vcomp(L'b', L'a'));
    System::Console::WriteLine();

    // test a different ordering rule
    Mypriority_queue c2 = cliext::greater<wchar_t>();
    vcomp = c2.value_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        vcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        vcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        vcomp(L'b', L'a'));
    return (0);
    }
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False

compare(L'a', L'a') = False
compare(L'a', L'b') = False
compare(L'b', L'a') = True

priority_queue::value_compare (STL/CLR)

O delegado de ordenação para dois valores.

Sintaxe

binary_delegate<value_type, value_type, int> value_compare;

Comentários

O tipo é um sinônimo para o delegado que determina se o primeiro argumento é ordenado antes do segundo.

Exemplo

// cliext_priority_queue_value_compare.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    Mypriority_queue::value_compare^ vcomp = c1.value_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        vcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        vcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        vcomp(L'b', L'a'));
    System::Console::WriteLine();

    // test a different ordering rule
    Mypriority_queue c2 = cliext::greater<wchar_t>();
    vcomp = c2.value_comp();

    System::Console::WriteLine("compare(L'a', L'a') = {0}",
        vcomp(L'a', L'a'));
    System::Console::WriteLine("compare(L'a', L'b') = {0}",
        vcomp(L'a', L'b'));
    System::Console::WriteLine("compare(L'b', L'a') = {0}",
        vcomp(L'b', L'a'));
    return (0);
    }
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False

compare(L'a', L'a') = False
compare(L'a', L'b') = False
compare(L'b', L'a') = True

priority_queue::value_type (STL/CLR)

O tipo de um elemento.

Sintaxe

typedef Value value_type;

Comentários

O tipo é um sinônimo do parâmetro de modelo Value.

Exemplo

// cliext_priority_queue_value_type.cpp
// compile with: /clr
#include <cliext/queue>

typedef cliext::priority_queue<wchar_t> Mypriority_queue;
int main()
    {
    Mypriority_queue c1;
    c1.push(L'a');
    c1.push(L'b');
    c1.push(L'c');

    // display reversed contents " a b c" using value_type
    for (; !c1.empty(); c1.pop())
        {   // store element in value_type object
        Mypriority_queue::value_type val = c1.top();

        System::Console::Write("{0} ", val);
        }
    System::Console::WriteLine();
    return (0);
    }
c b a