Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Classe
Uma classe do adaptador de contêiner de modelo que fornece uma restrição de funcionalidade para algum tipo de contêiner subjacente, limitando o acesso aos elementos inicial e final. Elementos podem ser adicionados na parte final e removidos da parte inicial, bem como podem ser inspecionados em ambas as extremidades da queue.
Sintaxe
template <class Type, class Container = deque <Type>>
class queue
Parâmetros
Type
O tipo de dados do elemento a ser armazenado no queue.
Container
O tipo do contêiner subjacente usado para implementar o queue.
Comentários
Os elementos da classe Type estipulados no primeiro parâmetro de modelo de um objeto de queue são sinônimo de value_type e devem corresponder ao tipo de elemento na classe de contêiner subjacente Container estipulada pelo segundo parâmetro de modelo. O Type deve ser atribuível, para que seja possível copiar objetos desse tipo e atribuir valores a variáveis desse tipo.
Classes de contêiner subjacente adequadas para queue incluem deque e list ou qualquer outro contêiner de sequência com suporte às operações de front, back, push_back e pop_front. A classe de contêiner subjacente é encapsulada dentro do adaptador do contêiner, que expõe apenas o conjunto limitado de funções membro de contêiner de sequência como uma interface pública.
A igualdade dos objetos de queue será comparável somente se a igualdade dos elementos da classe Type for comparável e são comparáveis em menor-que somente se os elementos da classe Type forem comparáveis em menor-que.
Há três tipos de adaptadores de contêiner definidos pela Biblioteca Padrão C++: stack, queue e priority_queue. Cada um deles restringe a funcionalidade de uma classe de contêiner subjacente para fornecer uma interface com precisão controlada a uma estrutura de dados padrão.
A classe
stackdá suporte a uma estrutura de dados UEPS (último a entrar, primeiro a sair). Uma boa analogia é pensar em uma pilha de pratos. Os elementos (os pratos) podem inseridos, inspecionados ou removidos somente da parte superior da pilha, que é o último elemento no final do contêiner base. A restrição para acessar apenas o elemento superior é o motivo para usar a classestack.A classe
queuedá suporte a uma estrutura de dados PEPS (primeiro a entrar, primeiro a sair). Uma boa analogia é pensar em pessoas em uma fila para o caixa do banco. Os elementos (as pessoas) vão sendo adicionados na parte final da fila e são removidos do início dela. Tanto o início quanto o final da fila podem ser inspecionados. A restrição de acessar apenas os elementosfrontebackfinal dessa maneira é o motivo para usar a classequeue.A classe
priority_queueordena seus elementos para que o elemento maior sempre esteja na posição superior. Ele dá suporte à inserção de um elemento e a inspeção e remoção do elemento superior. Uma boa analogia é pensar em pessoas em fila organizadas por idade, altura ou algum outro critério.
Membros
Construtores
| Nome | Descrição |
|---|---|
queue |
Constrói um queue que é vazio ou que é uma cópia de um objeto de contêiner base. |
Typedefs
| Nome | Descrição |
|---|---|
container_type |
Um tipo que fornece o contêiner base para ser adaptado pelo queue. |
size_type |
Um tipo de inteiro sem sinal que pode representar o número de elementos em um queue. |
value_type |
Um tipo que representa o tipo de objeto armazenado como um elemento em um queue. |
Funções
| Nome | Descrição |
|---|---|
back |
Retorna uma referência para o último e recém-adicionado elemento na parte final de queue. |
empty |
Testa se queue está vazio. |
front |
Retorna uma referência ao primeiro elemento na parte inicial de queue. |
pop |
Remove um elemento no início do queue. |
push |
Adiciona um elemento na parte traseira do queue. |
size |
Retorna o número de elementos no queue. |
back
Retorna uma referência para o último e recém-adicionado elemento na parte final de queue.
reference back();
const_reference back() const;
Valor de retorno
O último elemento de queue. Se a queue estiver vazia, o valor retornado será indefinido.
Comentários
Se o valor retornado de back for atribuído a const_reference, o objeto queue não poderá ser modificado. Se o valor retornado de back for atribuído a um reference, o objeto queue poderá ser modificado.
Quando compilado usando _ITERATOR_DEBUG_LEVEL definido como 1 ou 2, um erro de runtime ocorrerá se você tentar acessar um elemento em uma queue vazia. Consulte Iteradores Verificados para obter mais informações.
Exemplo
// queue_back.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
queue <int> q1;
q1.push( 10 );
q1.push( 11 );
int& i = q1.back( );
const int& ii = q1.front( );
cout << "The integer at the back of queue q1 is " << i
<< "." << endl;
cout << "The integer at the front of queue q1 is " << ii
<< "." << endl;
}
container_type
Um tipo que fornece o contêiner base a ser adaptado.
typedef Container container_type;
Comentários
O tipo é um sinônimo do parâmetro de modeloContainer. A classe de contêiner da sequência da Biblioteca Padrão C++ list e a classe deque padrão atendem aos requisitos para serem usadas como o contêiner base para um objeto queue. Tipos definidos pelo usuário que satisfazem os requisitos também podem ser usados.
Para mais informações sobre Container, confira a seção Comentários do tópico queue Class.
Exemplo
Veja o exemplo de queue que demonstra como declarar e usar container_type.
empty
Testa se queue está vazio.
bool empty() const;
Valor de retorno
true se queue for vazio; false se queue não for vazio.
Exemplo
// queue_empty.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
// Declares queues with default deque base container
queue <int> q1, q2;
q1.push( 1 );
if ( q1.empty( ) )
cout << "The queue q1 is empty." << endl;
else
cout << "The queue q1 is not empty." << endl;
if ( q2.empty( ) )
cout << "The queue q2 is empty." << endl;
else
cout << "The queue q2 is not empty." << endl;
}
The queue q1 is not empty.
The queue q2 is empty.
front
Retorna uma referência ao primeiro elemento na parte inicial de queue.
reference front();
const_reference front() const;
Valor de retorno
O primeiro elemento de queue. Se a queue estiver vazia, o valor retornado será indefinido.
Comentários
Se o valor retornado de front for atribuído a const_reference, o objeto queue não poderá ser modificado. Se o valor retornado de front for atribuído a um reference, o objeto queue poderá ser modificado.
A função membro retorna uma reference para o primeiro elemento da sequência controlada, que não pode ser vazio.
Quando compilado usando _ITERATOR_DEBUG_LEVEL definido como 1 ou 2, um erro de runtime ocorrerá se você tentar acessar um elemento em uma queue vazia. Consulte Iteradores Verificados para obter mais informações.
Exemplo
// queue_front.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main() {
using namespace std;
queue <int> q1;
q1.push( 10 );
q1.push( 20 );
q1.push( 30 );
queue <int>::size_type i;
i = q1.size( );
cout << "The queue length is " << i << "." << endl;
int& ii = q1.back( );
int& iii = q1.front( );
cout << "The integer at the back of queue q1 is " << ii
<< "." << endl;
cout << "The integer at the front of queue q1 is " << iii
<< "." << endl;
}
pop
Remove um elemento no início do queue.
void pop();
Comentários
queue não pode ser vazio para aplicar a função membro. O início da queue é a posição ocupada pelo elemento adicionado mais recentemente e é o último elemento no fim do contêiner.
Exemplo
// queue_pop.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
queue <int> q1, s2;
q1.push( 10 );
q1.push( 20 );
q1.push( 30 );
queue <int>::size_type i;
i = q1.size( );
cout << "The queue length is " << i << "." << endl;
i = q1.front( );
cout << "The element at the front of the queue is "
<< i << "." << endl;
q1.pop( );
i = q1.size( );
cout << "After a pop the queue length is "
<< i << "." << endl;
i = q1. front ( );
cout << "After a pop, the element at the front of the queue is "
<< i << "." << endl;
}
The queue length is 3.
The element at the front of the queue is 10.
After a pop the queue length is 2.
After a pop, the element at the front of the queue is 20.
push
Adiciona um elemento na parte traseira do queue.
void push(const Type& val);
Parâmetros
val
O elemento adicionado na parte final da queue.
Comentários
O fim da queue é a posição ocupada pelo elemento adicionado mais recentemente e é o último elemento no fim do contêiner.
Exemplo
// queue_push.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
queue <int> q1;
q1.push( 10 );
q1.push( 20 );
q1.push( 30 );
queue <int>::size_type i;
i = q1.size( );
cout << "The queue length is " << i << "." << endl;
i = q1.front( );
cout << "The element at the front of the queue is "
<< i << "." << endl;
}
The queue length is 3.
The element at the front of the queue is 10.
queue
Constrói um queue que é vazio ou que é uma cópia de um objeto de contêiner base.
queue();
explicit queue(const container_type& right);
Parâmetros
right
O contêiner const do qual o queue construído será uma cópia.
Comentários
O contêiner de base padrão da fila para queue é deque. Você também pode especificar list como um contêiner base, mas não pode especificar vector, pois ele não tem a função de membro pop_front necessária.
Exemplo
// queue_queue.cpp
// compile with: /EHsc
#include <queue>
#include <vector>
#include <list>
#include <iostream>
int main( )
{
using namespace std;
// Declares queue with default deque base container
queue <char> q1;
// Explicitly declares a queue with deque base container
queue <char, deque<char> > q2;
// These lines don't cause an error, even though they
// declares a queue with a vector base container
queue <int, vector<int> > q3;
q3.push( 10 );
// but the following would cause an error because vector has
// no pop_front member function
// q3.pop( );
// Declares a queue with list base container
queue <int, list<int> > q4;
// The second member function copies elements from a container
list<int> li1;
li1.push_back( 1 );
li1.push_back( 2 );
queue <int, list<int> > q5( li1 );
cout << "The element at the front of queue q5 is "
<< q5.front( ) << "." << endl;
cout << "The element at the back of queue q5 is "
<< q5.back( ) << "." << endl;
}
The element at the front of queue q5 is 1.
The element at the back of queue q5 is 2.
size
Retorna o número de elementos no queue.
size_type size() const;
Valor de retorno
O comprimento atual do queue.
Exemplo
// queue_size.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
queue <int> q1, q2;
queue <int>::size_type i;
q1.push( 1 );
i = q1.size( );
cout << "The queue length is " << i << "." << endl;
q1.push( 2 );
i = q1.size( );
cout << "The queue length is now " << i << "." << endl;
}
The queue length is 1.
The queue length is now 2.
size_type
Um tipo de inteiro sem sinal que pode representar o número de elementos em um queue.
typedef typename Container::size_type size_type;
Comentários
O tipo é um sinônimo do size_type do contêiner base adaptado pelo queue.
Exemplo
Veja o exemplo de queue::front que demonstra como declarar e usar size_type.
value_type
Um tipo que representa o tipo de objeto armazenado como um elemento em um queue.
typedef typename Container::value_type value_type;
Comentários
O tipo é um sinônimo do value_type do contêiner base adaptado pelo queue.
Exemplo
// queue_value_type.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>
int main( )
{
using namespace std;
// Declares queues with default deque base container
queue<int>::value_type AnInt;
AnInt = 69;
cout << "The value_type is AnInt = " << AnInt << endl;
queue<int> q1;
q1.push(AnInt);
cout << "The element at the front of the queue is "
<< q1.front( ) << "." << endl;
}
The value_type is AnInt = 69
The element at the front of the queue is 69.
Confira também
Acesso Thread-Safe na Biblioteca Padrão C++
Referência da biblioteca padrão C++