priority_queue (STL/CLR)
La classe modello descrive un oggetto che controlla una sequenza ordinata di lunghezza variabile di elementi con accesso limitato. Usare l'adattatore priority_queue
contenitore per gestire un contenitore sottostante come coda di priorità.
Nella descrizione seguente GValue
, è uguale a Value a meno che quest'ultimo non sia un tipo ref, nel qual caso è Value^
. Analogamente, GContainer
è uguale a Container a meno che quest'ultimo non sia un tipo ref, nel qual caso è Container^
.
Sintassi
template<typename Value,
typename Container>
ref class priority_queue
System::ICloneable,
Microsoft::VisualC::StlClr::IPriorityQueue<GValue, GContainer>
{ ..... };
Parametri
valore
Tipo di un elemento nella sequenza controllata.
Contenitore
Tipo del contenitore sottostante.
Requisiti
Intestazione:<cliext/queue>
Spazio dei nomi: cliext
Dichiarazioni
Definizione del tipo | Descrizione |
---|---|
priority_queue::const_reference (STL/CLR) | Tipo di un riferimento costante a un elemento. |
priority_queue::container_type (STL/CLR) | Tipo del contenitore sottostante. |
priority_queue::difference_type (STL/CLR) | Tipo di una distanza Signed tra due elementi. |
priority_queue::generic_container (STL/CLR) | Tipo dell'interfaccia generica per l'adattatore contenitore. |
priority_queue::generic_value (STL/CLR) | Tipo di un elemento per l'interfaccia generica per l'adattatore contenitore. |
priority_queue::reference (STL/CLR) | Tipo di un riferimento a un elemento. |
priority_queue::size_type (STL/CLR) | Tipo di una distanza Signed tra due elementi. |
priority_queue::value_compare (STL/CLR) | Delegato di ordinamento per due elementi. |
priority_queue::value_type (STL/CLR) | Tipo di un elemento. |
Funzione membro | Descrizione |
---|---|
priority_queue::assign (STL/CLR) | Sostituisce tutti gli elementi. |
priority_queue::empty (STL/CLR) | Verifica se sono presenti o meno degli elementi. |
priority_queue::get_container (STL/CLR) | Accede al contenitore sottostante. |
priority_queue::pop (STL/CLR) | Rimuove l'elemento hghest-priority. |
priority_queue::priority_queue (STL/CLR) | Costruisce un oggetto contenitore. |
priority_queue::push (STL/CLR) | Aggiunge un nuovo elemento. |
priority_queue::size (STL/CLR) | Conta il numero di elementi. |
priority_queue::top (STL/CLR) | Accede all'elemento con priorità più alta. |
priority_queue::to_array (STL/CLR) | Copia la sequenza controllata in una nuova matrice. |
priority_queue::value_comp (STL/CLR) | Copia il delegato di ordinamento per due elementi. |
Proprietà | Descrizione |
---|---|
priority_queue::top_item (STL/CLR) | Accede all'elemento con priorità più alta. |
Operatore | Descrizione |
---|---|
priority_queue::operator= (STL/CLR) | Sostituisce la sequenza controllata. |
Interfacce
Interfaccia | Descrizione |
---|---|
ICloneable | Duplicare un oggetto . |
Valore IPriorityQueue<, Contenitore> | Mantenere l'adattatore contenitore generico. |
Osservazioni:
L'oggetto alloca e libera l'archiviazione per la sequenza che controlla tramite un contenitore sottostante, di tipo Container
, che archivia Value
gli elementi e aumenta su richiesta. Mantiene la sequenza ordinata come heap, con l'elemento con priorità più alta (l'elemento superiore) facilmente accessibile e rimovibile. L'oggetto limita l'accesso al push di nuovi elementi ed estrae solo l'elemento con priorità più alta, implementando una coda di priorità.
L'oggetto ordina la sequenza che controlla chiamando un oggetto delegato archiviato di tipo priority_queue::value_compare (STL/CLR). È possibile specificare l'oggetto delegato archiviato quando si costruisce il priority_queue; se non si specifica alcun oggetto delegato, il valore predefinito è il confronto operator<(value_type, value_type)
. Per accedere a questo oggetto archiviato, chiamare la funzione membro priority_queue::value_comp (STL/CLR).()
Tale oggetto delegato deve imporre un ordinamento rigido debole sui valori di tipo priority_queue::value_type (STL/CLR). Ciò significa che per due chiavi X
e Y
:
value_comp()(X, Y)
restituisce lo stesso risultato booleano in ogni chiamata.
Se value_comp()(X, Y)
è true, value_comp()(Y, X)
deve essere false.
Se value_comp()(X, Y)
è true, X
viene detto che deve essere ordinato prima Y
di .
Se !value_comp()(X, Y) && !value_comp()(Y, X)
è true, X
e Y
viene detto di avere un ordinamento equivalente.
Per qualsiasi elemento X
che precede Y
nella sequenza controllata, key_comp()(Y, X)
è false. Per l'oggetto delegato predefinito, le chiavi non diminuiscono mai nel valore.
L'elemento con priorità più alta è quindi uno degli elementi che non vengono ordinati prima di qualsiasi altro elemento.
Poiché il contenitore sottostante mantiene gli elementi ordinati come heap:
Il contenitore deve supportare iteratori ad accesso casuale.
Gli elementi con ordinamento equivalente possono essere visualizzati in un ordine diverso da quello di cui sono stati inseriti. L'ordinamento non è stabile.
Pertanto, i candidati per il contenitore sottostante includono deque (STL/CLR) e vector (STL/CLR).
Membri
priority_queue::assign (STL/CLR)
Sostituisce tutti gli elementi.
Sintassi
void assign(priority_queue<Value, Container>% right);
Parametri
right
Adattatore contenitore da inserire.
Osservazioni:
La funzione membro viene right.get_container()
assegnata al contenitore sottostante. Viene usato per modificare l'intero contenuto della coda.
Esempio
// 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)
Tipo di un riferimento costante a un elemento.
Sintassi
typedef value_type% const_reference;
Osservazioni:
Il tipo descrive un riferimento costante a un elemento.
Esempio
// 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)
Tipo del contenitore sottostante.
Sintassi
typedef Container value_type;
Osservazioni:
Il tipo è un sinonimo del parametro di modello Container
.
Esempio
// 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)
Tipi di distanza con segno tra due elementi.
Sintassi
typedef int difference_type;
Osservazioni:
Il tipo descrive un numero di elementi potenzialmente negativo.
Esempio
// 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)
Verifica se sono presenti o meno degli elementi.
Sintassi
bool empty();
Osservazioni:
La funzione membro restituisce true per una sequenza controllata vuota. Equivale a priority_queue::size (STL/CLR).() == 0
Viene usato per verificare se il priority_queue è vuoto.
Esempio
// 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)
Tipo dell'interfaccia generica per il contenitore.
Sintassi
typedef Microsoft::VisualC::StlClr::IPriorityQueue<Value>
generic_container;
Osservazioni:
Il tipo descrive l'interfaccia generica per questa classe adattatore contenitore modello.
Esempio
// 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)
Tipo di un elemento da usare con l'interfaccia generica per il contenitore.
Sintassi
typedef GValue generic_value;
Osservazioni:
Il tipo descrive un oggetto di tipo GValue
che descrive il valore dell'elemento archiviato da usare con l'interfaccia generica per questa classe contenitore modello. (GValue
è value_type
o value_type^
se value_type
è un tipo ref.
Esempio
// 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)
Accede al contenitore sottostante.
Sintassi
container_type get_container();
Osservazioni:
La funzione membro restituisce il contenitore sottostante. È possibile usarlo per ignorare le restrizioni imposte dal wrapper del contenitore.
Esempio
// 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)
Sostituisce la sequenza controllata.
Sintassi
priority_queue <Value, Container>% operator=(priority_queue <Value, Container>% right);
Parametri
right
Adattatore contenitore da copiare.
Osservazioni:
L'operatore membro copia direttamente nell'oggetto , quindi restituisce *this
. Lo si usa per sostituire la sequenza controllata con una copia della sequenza controllata a destra.
Esempio
// 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)
Rimuove l'elemento proirity più alto.
Sintassi
void pop();
Osservazioni:
La funzione membro rimuove l'elemento con priorità più alta della sequenza controllata, che deve essere non vuoto. È possibile usarlo per abbreviare la coda di un elemento nella parte posteriore.
Esempio
// 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)
Costruisce un oggetto adattatore contenitore.
Sintassi
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);
Parametri
cont
Contenitore da copiare.
first
Inizio dell'intervallo da inserire.
last
Fine dell'intervallo da inserire.
Pred
Predicato di ordinamento per la sequenza controllata.
right
Oggetto o un intervallo da inserire.
Osservazioni:
Costruttore:
priority_queue();
crea un contenitore incapsulato vuoto, con il predicato di ordinamento predefinito. Viene usato per specificare una sequenza controllata iniziale vuota, con il predicato di ordinamento predefinito.
Costruttore:
priority_queue(priority_queue<Value, Container>% right);
crea un contenitore di cui è stato eseguito il wrapping che è una copia di right.get_container()
, con il predicato right.value_comp()
di ordinamento . Viene usato per specificare una sequenza controllata iniziale che è una copia della sequenza controllata dal diritto dell'oggetto coda, con lo stesso predicato di ordinamento.
Costruttore:
priority_queue(priority_queue<Value, Container>^ right);
crea un contenitore di cui è stato eseguito il wrapping che è una copia di right->get_container()
, con il predicato right->value_comp()
di ordinamento . Viene usato per specificare una sequenza controllata iniziale che è una copia della sequenza controllata dall'oggetto *right
queue , con lo stesso predicato di ordinamento.
Costruttore:
explicit priority_queue(value_compare^ pred);
crea un contenitore di cui è stato eseguito il wrapping vuoto, con il predicato di ordinamento pred. Viene usato per specificare una sequenza controllata iniziale vuota, con il predicato di ordinamento specificato.
Costruttore:
priority_queue(value_compare^ pred, container_type cont);
crea un contenitore incapsulato vuoto, con il predicato di ordinamento pred, quindi esegue il push di tutti gli elementi di cont Viene usato per specificare una sequenza controllata iniziale da un contenitore esistente, con il predicato di ordinamento specificato.
Costruttore:
template<typename InIt> priority_queue(InIt first, InIt last);
crea un contenitore incapsulato vuoto, con il predicato di ordinamento predefinito, quindi esegue il push della sequenza [first
, last
). Viene usato per specificare una sequenza controllata iniziale da un'eqeuence specificata, con il predicato di ordinamento specificato.
Costruttore:
template<typename InIt> priority_queue(InIt first, InIt last, value_compare^ pred);
crea un contenitore incapsulato vuoto, con il predicato di ordinamento pred, quindi esegue il push della sequenza [first
, last
). Viene usato per specificare una sequenza controllata iniziale da una seqeuence specificata, con il predicato di ordinamento specificato.
Costruttore:
template<typename InIt> priority_queue(InIt first, InIt last, value_compare^ pred, container_type% cont);
crea un contenitore incapsulato vuoto, con il predicato di ordinamento pred, quindi esegue il push di tutti gli elementi di cont più la sequenza [first
, last
). Viene usato per specificare una sequenza controllata iniziale da un contenitore esistente e una seqeuence specificata, con il predicato di ordinamento specificato.
Esempio
// 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)
Aggiunge un nuovo elemento.
Sintassi
void push(value_type val);
Osservazioni:
La funzione membro inserisce un elemento con valore val
nella sequenza controllata e riordina la sequenza controllata per mantenere la disciplina heap. È possibile usarlo per aggiungere un altro elemento alla coda.
Esempio
// 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)
Tipo di un riferimento a un elemento.
Sintassi
typedef value_type% reference;
Osservazioni:
Il tipo descrive un riferimento a un elemento.
Esempio
// 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 il numero di elementi.
Sintassi
size_type size();
Osservazioni:
La funzione membro restituisce la lunghezza della sequenza controllata. Viene usato per determinare il numero di elementi attualmente presenti nella sequenza controllata. Se è importante sapere se la sequenza ha dimensioni diverse da zero, vedere priority_queue::empty (STL/CLR).If all you care about is if the sequence has notzero size, see priority_queue::empty (STL/CLR)()
.
Esempio
// 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)
Tipo di distanza con segno tra due elementi.
Sintassi
typedef int size_type;
Osservazioni:
Il tipo descrive un numero di elementi non negativi.
Esempio
// 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 la sequenza controllata in una nuova matrice.
Sintassi
cli::array<Value>^ to_array();
Osservazioni:
La funzione membro restituisce una matrice contenente la sequenza controllata. Viene usato per ottenere una copia della sequenza controllata in formato matrice.
Esempio
// 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)
Accede all'elemento con priorità più alta.
Sintassi
reference top();
Osservazioni:
La funzione membro restituisce un riferimento all'elemento top (con priorità più alta) della sequenza controllata, che deve essere non vuoto. Viene usato per accedere all'elemento con priorità più alta, quando si sa che esiste.
Esempio
// 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)
Accede all'elemento con priorità più alta.
Sintassi
property value_type back_item;
Osservazioni:
La proprietà accede all'elemento superiore (con priorità più alta) della sequenza controllata, che deve essere non vuoto. È possibile usarlo per leggere o scrivere l'elemento con priorità più alta, quando si sa che esiste.
Esempio
// 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 il delegato di ordinamento per due elementi.
Sintassi
value_compare^ value_comp();
Osservazioni:
La funzione membro restituisce il delegato di ordinamento utilizzato per ordinare la sequenza controllata. Viene usato per confrontare due valori.
Esempio
// 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)
Delegato di ordinamento per due valori.
Sintassi
binary_delegate<value_type, value_type, int> value_compare;
Osservazioni:
Il tipo è un sinonimo del delegato che determina se il primo argomento viene ordinato prima del secondo.
Esempio
// 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)
Tipo di un elemento.
Sintassi
typedef Value value_type;
Osservazioni:
Il tipo è un sinonimo del parametro di modello Value.
Esempio
// 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