Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Descreve um objeto que controla uma sequência de elementos de comprimento variável. A sequência é armazenada como uma lista de nós vinculados isoladamente, cada um contendo um membro do tipo Type.
Sintaxe
template <class Type,
class Allocator = allocator<Type>>
class forward_list
Parâmetros
Type
O tipo de dados do elemento a ser armazenado no forward_list.
Allocator
O objeto alocador armazenado que encapsula detalhes sobre a alocação e desalocação forward_list de memória. Este parâmetro é opcional. O valor padrão é alocator<Type>.
Observações
Um forward_list objeto aloca e libera armazenamento para a sequência que controla por meio de um objeto armazenado de classe Allocator baseado em allocator Class (comumente conhecido como std::allocator). Para obter mais informações, consulte Alocators. Um objeto alocador deve ter a mesma interface externa que um objeto do tipo allocator.
Observação
O objeto alocador armazenado não é copiado quando o objeto contêiner é atribuído.
Iteradores, ponteiros e referências podem se tornar inválidos quando elementos de sua sequência controlada são apagados através forward_listdo . Inserções e emendas realizadas na sequência controlada através forward_list não invalidam iteradores.
Adições à sequência controlada podem ocorrer por chamadas para forward_list::insert_after, que é a única função de membro que chama o construtor Type(const T&).
forward_list também pode chamar construtores move. Se essa expressão lançar uma exceção, o objeto container não insere novos elementos e relançará a exceção. Assim, um objeto do tipo forward_list é deixado em um estado conhecido quando tais exceções ocorrem.
Membros
Construtores
| Nome | Descrição |
|---|---|
forward_list |
Constrói um objeto do tipo forward_list. |
Typedefs (definições de tipos)
| Nome | Descrição |
|---|---|
allocator_type |
Um tipo que representa a classe alocator para um objeto de lista de encaminhamento. |
const_iterator |
Um tipo que fornece um iterador constante para a lista de encaminhamento. |
const_pointer |
Um tipo que fornece um ponteiro para um const elemento em uma lista de encaminhamento. |
const_reference |
Um tipo que fornece uma referência constante a um elemento na lista de encaminhamento. |
difference_type |
Um tipo de inteiro assinado que pode ser usado para representar o número de elementos de uma lista direta em um intervalo entre elementos apontados por iteradores. |
iterator |
Um tipo que fornece um iterador para a lista de encaminhamento. |
pointer |
Um tipo que fornece um ponteiro para um elemento na lista de encaminhamento. |
reference |
Um tipo que fornece uma referência a um elemento na lista de encaminhamento. |
size_type |
Um tipo que representa a distância não assinada entre dois elementos. |
value_type |
Um tipo que representa o tipo de elemento armazenado em uma lista de encaminhamento. |
Funções
| Nome | Descrição |
|---|---|
assign |
Apaga elementos de uma lista de encaminhamento e copia um novo conjunto de elementos para uma lista de encaminhamento de destino. |
before_begin |
Retorna um iterador abordando a posição antes do primeiro elemento em uma lista de encaminhamento. |
begin |
Retorna um iterador endereçando o primeiro elemento em uma lista de encaminhamento. |
cbefore_begin |
Retorna um iterador const abordando a posição antes do primeiro elemento em uma lista de encaminhamento. |
cbegin |
Retorna um iterador const endereçando o primeiro elemento em uma lista de encaminhamento. |
cend |
Retorna um iterador const que aborda o local que sucede o último elemento em uma lista de encaminhamento. |
clear |
Apaga todos os elementos de uma lista de encaminhamento. |
emplace_after |
Move constrói um novo elemento após uma posição especificada. |
emplace_front |
Adiciona um elemento construído no local ao início da lista. |
empty |
Testa se uma lista de encaminhamento está vazia. |
end |
Retorna um iterador que aborda o local que sucede o último elemento em uma lista de encaminhamento. |
erase_after |
Remove elementos da lista de encaminhamento após uma posição especificada. |
front |
Retorna uma referência ao primeiro elemento de uma lista de encaminhamento. |
get_allocator |
Retorna uma cópia do objeto alocador usado para construir uma lista de encaminhamento. |
insert_after |
Adiciona elementos à lista de encaminhamento após uma posição especificada. |
max_size |
Devolve o comprimento máximo de uma lista de encaminhamentos. |
merge |
Remove os elementos da lista de argumentos, insere-os na lista de encaminhamento de destino e ordena o novo conjunto combinado de elementos em ordem crescente ou em alguma outra ordem especificada. |
pop_front |
Exclui o elemento no início de uma lista de encaminhamento. |
push_front |
Adiciona um elemento ao início de uma lista de encaminhamento. |
remove |
Apaga elementos em uma lista de encaminhamento que corresponde a um valor especificado. |
remove_if |
Apaga elementos de uma lista de encaminhamento para os quais um predicado especificado é satisfeito. |
resize |
Especifica um novo tamanho para uma lista de encaminhamento. |
reverse |
Inverte a ordem em que os elementos ocorrem em uma lista de encaminhamento. |
sort |
Organiza os elementos em ordem crescente ou com uma ordem especificada por um predicado. |
splice_after |
Restitches links entre nós. |
swap |
Troca os elementos de duas listas previsionais. |
unique |
Remove elementos adjacentes que passam em um teste especificado. |
Operadores
| Nome | Descrição |
|---|---|
operator= |
Substitui os elementos da lista de encaminhamento por uma cópia de outra lista de encaminhamento. |
allocator_type
Um tipo que representa a classe alocator para um objeto de lista de encaminhamento.
typedef Allocator allocator_type;
Observações
allocator_type é sinônimo do parâmetro de modelo Allocator.
assign
Apaga elementos de uma lista de encaminhamento e copia um novo conjunto de elementos para uma lista de encaminhamento de destino.
void assign(
size_type Count,
const Type& Val);
void assign(
initializer_list<Type> IList);
template <class InputIterator>
void assign(InputIterator First, InputIterator Last);
Parâmetros
first
O início da gama de substituição.
last
O fim da gama de substituição.
count
O número de elementos a atribuir.
val
O valor a ser atribuído a cada elemento.
Type
O tipo do valor.
IList
O initializer_list para copiar.
Observações
Se o forward_list for um tipo inteiro, a primeira função de membro se comportará da mesma forma que assign((size_type)First, (Type)Last). Caso contrário, a primeira função de membro substitui a sequência controlada por *this pela sequência [ First, Last), que não deve sobrepor-se à sequência controlada inicial.
A função de segundo membro substitui a sequência controlada por *this por uma repetição de Count elementos de valor Val.
A função de terceiro membro copia os elementos do para o initializer_listforward_list.
before_begin
Retorna um iterador abordando a posição antes do primeiro elemento em uma lista de encaminhamento.
const_iterator before_begin() const;
iterator before_begin();
Valor de retorno
Um iterador avançado que aponta imediatamente antes do primeiro elemento da sequência (ou imediatamente antes do final de uma sequência vazia).
begin
Retorna um iterador endereçando o primeiro elemento em uma lista de encaminhamento.
const_iterator begin() const;
iterator begin();
Valor de retorno
Um iterador avançado que aponta para o primeiro elemento da sequência (ou logo após o final de uma sequência vazia).
cbefore_begin
Retorna um iterador const abordando a posição antes do primeiro elemento em uma lista de encaminhamento.
const_iterator cbefore_begin() const;
Valor de retorno
Um iterador avançado que aponta imediatamente antes do primeiro elemento da sequência (ou imediatamente antes do final de uma sequência vazia).
cbegin
Retorna um iterador const que aborda o primeiro elemento no intervalo.
const_iterator cbegin() const;
Valor de retorno
Um const iterador de acesso direto que aponta para o primeiro elemento do intervalo ou para o local logo após o final de um intervalo vazio (para um intervalo vazio, cbegin() == cend()).
Observações
Com o valor de retorno de cbegin, os elementos no intervalo não podem ser modificados.
Você pode usar essa função de membro no lugar da função de membro begin() para garantir que o valor de retorno seja const_iterator. Normalmente, ele é usado com a palavra-chave de dedução de tipo auto, conforme mostrado no exemplo a seguir. No exemplo, considere Container como um recipiente modificável (não const) de qualquer tipo que suporte begin() e cbegin().
auto i1 = Container.begin();
// i1 is Container<T>::iterator
auto i2 = Container.cbegin();
// i2 is Container<T>::const_iterator
cend
Retorna um iterador const que aborda o local logo após o último elemento de um intervalo.
const_iterator cend() const;
Valor de retorno
Um iterador de acesso direto que aponta para além do final do intervalo.
Observações
cend é usado para testar se um iterador passou no final de seu intervalo.
Você pode usar essa função de membro no lugar da função de membro end() para garantir que o valor de retorno seja const_iterator. Normalmente, ele é usado com a palavra-chave de dedução de tipo auto, conforme mostrado no exemplo a seguir. No exemplo, considere Container como um recipiente modificável (não const) de qualquer tipo que suporte end() e cend().
auto i1 = Container.end();
// i1 is Container<T>::iterator
auto i2 = Container.cend();
// i2 is Container<T>::const_iterator
O valor retornado por cend não deve ser desreferenciado.
clear
Apaga todos os elementos de uma lista de encaminhamento.
void clear();
Observações
Esta função de membro chama erase_after(before_begin(), end()).
const_iterator
Um tipo que fornece um iterador constante para a lista de encaminhamento.
typedef implementation-defined const_iterator;
Observações
const_iterator Descreve um objeto que pode servir como um iterador de avanço constante para a sequência controlada. É descrito aqui como sinônimo de um tipo definido pela implementação.
const_pointer
Um tipo que fornece um ponteiro para um const elemento em uma lista de encaminhamento.
typedef typename Allocator::const_pointer
const_pointer;
const_reference
Um tipo que fornece uma referência constante a um elemento na lista de encaminhamento.
typedef typename Allocator::const_reference const_reference;
difference_type
Um tipo de inteiro assinado que pode ser usado para representar o número de elementos de uma lista direta em um intervalo entre elementos apontados por iteradores.
typedef typename Allocator::difference_type difference_type;
Observações
difference_type Descreve um objeto que pode representar a diferença entre os endereços de quaisquer dois elementos na sequência controlada.
emplace_after
Move constrói um novo elemento após uma posição especificada.
template <class T>
iterator emplace_after(const_iterator Where, Type&& val);
Parâmetros
Where
A posição na lista de encaminhamento de destino onde o novo elemento é construído.
val
O argumento do construtor.
Valor de retorno
Um iterador que designa o elemento recém-inserido.
Observações
Esta função de membro insere um elemento com os argumentos val do construtor logo após o elemento apontado por Where na sequência controlada. Seu comportamento é o mesmo que forward_list::insert_after.
emplace_front
Adiciona um elemento construído no local ao início da lista.
template <class Type>
void emplace_front(Type&& val);
Parâmetros
val
O elemento adicionado ao início da lista de encaminhamento.
Observações
Esta função de membro insere um elemento com os argumentos val do construtor no início da sequência controlada.
Se uma exceção for lançada, o contêiner será deixado inalterado e a exceção será relançada.
empty
Testa se uma lista de encaminhamento está vazia.
bool empty() const;
Valor de retorno
true se a lista de encaminhamento estiver vazia; caso contrário, false.
end
Retorna um iterador que aborda o local que sucede o último elemento em uma lista de encaminhamento.
const_iterator end() const;
iterator end();
Valor de retorno
Um iterador avançado que aponta para além do final da sequência.
erase_after
Remove elementos da lista de encaminhamento após uma posição especificada.
iterator erase_after(const_iterator Where);
iterator erase_after(const_iterator first, const_iterator last);
Parâmetros
Where
A posição na lista de encaminhamento de destino onde o elemento é apagado.
first
O início do intervalo para apagar.
last
O fim do intervalo para apagar.
Valor de retorno
Um iterador que designa o primeiro elemento remanescente além de quaisquer elementos removidos, ou forward_list::end se tal elemento não existir.
Observações
A primeira função de membro remove o elemento da sequência controlada logo após Where.
A segunda função de membro remove os elementos da sequência controlada no intervalo ( first, last) (nenhum ponto final está incluído).
Apagar N elementos causa N chamadas de destruidores.
A realocação ocorre, de modo que iteradores e referências se tornam inválidos para os elementos apagados.
As funções de membro nunca lançam uma exceção.
forward_list
Constrói um objeto do tipo forward_list.
forward_list();
explicit forward_list(const Allocator& Al);
explicit forward_list(size_type Count);
forward_list(size_type Count, const Type& Val);
forward_list(size_type Count, const Type& Val, const Allocator& Al);
forward_list(const forward_list& Right);
forward_list(const forward_list& Right, const Allocator& Al);
forward_list(forward_list&& Right);
forward_list(forward_list&& Right, const Allocator& Al);
forward_list(initializer_list<Type> IList, const Alloc& Al);
template <class InputIterator>
forward_list(InputIterator First, InputIterator Last);
template <class InputIterator>
forward_list(InputIterator First, InputIterator Last, const Allocator& Al);
Parâmetros
Al
A classe de alocador a ser usada com esse objeto.
Count
O número de elementos na lista construída.
Val
O valor dos elementos na lista construída.
Right
A lista da qual a lista construída deve ser uma cópia.
First
A posição do primeiro elemento na gama de elementos a serem copiados.
Last
A posição do primeiro elemento além da gama de elementos a serem copiados.
IList
O initializer_list para copiar.
Observações
Todos os construtores armazenam e allocator inicializam a sequência controlada. O objeto alocador é o argumento Al, se presente. Para o construtor copy, é right.get_allocator(). Caso contrário, é Allocator().
Os dois primeiros construtores especificam uma sequência controlada inicial vazia.
O terceiro construtor especifica uma repetição de Count elementos de valor Type().
O quarto e quinto construtores especificam uma repetição de elementos de Count valor Val.
O sexto construtor especifica uma cópia da sequência controlada por Right. Se InputIterator for um tipo inteiro, os dois construtores seguintes especificam uma repetição de (size_type)First elementos de valor (Type)Last. Caso contrário, os próximos dois construtores especificam a sequência [First, Last).
O nono e décimo construtores são os mesmos que o sexto, mas com uma referência de rvalue .
O último construtor especifica a sequência controlada inicial com um objeto de classe initializer_list<Type>.
front
Retorna uma referência ao primeiro elemento de uma lista de encaminhamento.
reference front();
const_reference front() const;
Valor de retorno
Uma referência ao primeiro elemento da sequência controlada, que deve não estar vazio.
get_allocator
Retorna uma cópia do objeto alocador usado para construir uma lista de encaminhamento.
allocator_type get_allocator() const;
Valor de retorno
O objeto armazenado allocator .
insert_after
Adiciona elementos à lista de encaminhamento após uma posição especificada.
iterator insert_after(const_iterator Where, const Type& Val);
void insert_after(const_iterator Where, size_type Count, const Type& Val);
void insert_after(const iterator Where, initializer_list<Type> IList);
iterator insert_after(const_iterator Where, Type&& Val);
template <class InputIterator>
void insert_after(const_iterator Where, InputIterator First, InputIterator Last);
Parâmetros
Where
A posição na lista de encaminhamento de destino onde o primeiro elemento é inserido.
Count
O número de elementos a inserir.
First
O início do intervalo de inserção.
Last
O final do intervalo de inserção.
Val
O elemento adicionado à lista de encaminhamento.
IList
O initializer_list a inserir.
Valor de retorno
Um iterador que designa o elemento recém-inserido (apenas funções de primeiro e último membro).
Observações
Cada uma das funções de membro insere — logo após o elemento apontado pela Where sequência controlada — uma sequência que é especificada pelos operandos restantes.
A primeira função de membro insere um elemento que tem valor Val e retorna um iterador que designa o elemento recém-inserido.
A segunda função de membro insere uma repetição de Count elementos de valor Val.
Se InputIterator for um tipo inteiro, a função de terceiro membro se comportará da mesma forma que insert(it, (size_type)First, (Type)Last). Caso contrário, insere a sequência [First, Last), que não deve sobrepor-se à sequência controlada inicial.
A quarta função de membro insere a sequência especificada por um objeto de classe initializer_list<Type>.
A última função de membro é a mesma que a primeira, mas com uma referência de rvalue .
A inserção de elementos causa N chamadas de N construtor.
A realocação ocorre, mas nenhum iterador ou referência se torna inválido.
Se uma exceção for lançada durante a inserção de um ou mais elementos, o contêiner será deixado inalterado e a exceção será relançada.
iterator
Um tipo que fornece um iterador para a lista de encaminhamento.
typedef implementation-defined iterator;
Observações
iterator Descreve um objeto que pode servir como um iterador de encaminhamento para a sequência controlada. É descrito aqui como sinônimo de um tipo definido pela implementação.
max_size
Devolve o comprimento máximo de uma lista de encaminhamentos.
size_type max_size() const;
Valor de retorno
O comprimento da sequência mais longa que o objeto pode controlar.
merge
Combina duas sequências ordenadas numa única sequência ordenada em tempo linear. Remove os elementos da lista de argumentos e os insere neste forward_list. As duas listas devem ser classificadas pelo mesmo objeto de função de comparação antes da chamada para merge. A lista combinada será classificada por esse objeto de função de comparação.
void merge(forward_list& right);
template <class Predicate>
void merge(forward_list& right, Predicate comp);
Parâmetros
right
A lista de encaminhamento a partir da qual mesclar.
comp
O objeto de função compare que é usado para classificar elementos.
Observações
forward_list::merge remove os elementos do forward_listright, e os insere neste forward_list. Ambas as sequências devem ser ordenadas pelo mesmo predicado, descrito abaixo. A sequência combinada também é ordenada por esse objeto de função de comparação.
Para os iteradores Pi e Pj elementos de designação em posições i e j, a função de primeiro membro impõe a ordem !(*Pj < *Pi) sempre que i < j. (Os elementos são ordenados por ascending ordem.) A função de segundo membro impõe a ordem ! comp(*Pj, *Pi) sempre que i < j.
Nenhum par de elementos na sequência controlada original é revertido na sequência controlada resultante. Se um par de elementos na sequência controlada resultante comparar igual (!(*Pi < *Pj) && !(*Pj < *Pi)), um elemento da sequência controlada original aparece antes de um elemento da sequência controlada por right.
Uma exceção ocorre somente se comp lançar uma exceção. Nesse caso, a sequência controlada é deixada em ordem não especificada e a exceção é relançada.
operator=
Substitui os elementos da lista de encaminhamento por uma cópia de outra lista de encaminhamento.
forward_list& operator=(const forward_list& right);
forward_list& operator=(initializer_list<Type> IList);
forward_list& operator=(forward_list&& right);
Parâmetros
right
A lista de encaminhamento que está sendo copiada para a lista de encaminhamento.
IList
Uma lista de inicializadores entre chaves, que se comporta como uma sequência de elementos do tipo Type.
Observações
O primeiro operador membro substitui a sequência controlada por uma cópia da sequência controlada por right.
O segundo operador membro substitui a sequência controlada de um objeto de classe initializer_list<Type>.
O terceiro operador membro é o mesmo que o primeiro, mas com uma referência de rvalue .
pointer
Um tipo que fornece um ponteiro para um elemento na lista de encaminhamento.
typedef typename Allocator::pointer pointer;
pop_front
Exclui o elemento no início de uma lista de encaminhamento.
void pop_front();
Observações
O primeiro elemento da lista de encaminhamento deve não estar vazio.
A função de membro nunca lança uma exceção.
push_front
Adiciona um elemento ao início de uma lista de encaminhamento.
void push_front(const Type& val);
void push_front(Type&& val);
Parâmetros
val
O elemento adicionado ao início da lista de encaminhamento.
Observações
Se uma exceção for lançada, o contêiner será deixado inalterado e a exceção será relançada.
reference
Um tipo que fornece uma referência a um elemento na lista de encaminhamento.
typedef typename Allocator::reference reference;
remove
Apaga elementos em uma lista de encaminhamento que corresponde a um valor especificado.
void remove(const Type& val);
Parâmetros
val
O valor que, se mantido por um elemento, resultará na remoção desse elemento da lista.
Observações
A função de membro remove da sequência controlada todos os elementos, designados pelo iterador P, para os quais *P == val.
A função de membro nunca lança uma exceção.
remove_if
Apaga elementos de uma lista de encaminhamento para os quais um predicado especificado é satisfeito.
template <class Predicate>
void remove_if(Predicate pred);
Parâmetros
pred
O predicado unário que, se satisfeito por um elemento, resulta na supressão desse elemento da lista.
Observações
A função de membro remove da sequência controlada todos os elementos, designados pelo iterador P, para o qual pred(*P) é verdadeiro.
Uma exceção ocorre somente se pred lançar uma exceção. Nesse caso, a sequência controlada é deixada em um estado não especificado e a exceção é relançada.
resize
Especifica um novo tamanho para uma lista de encaminhamento.
void resize(size_type _Newsize);
void resize(size_type _Newsize, const Type& val);
Parâmetros
_Newsize
O número de elementos na lista de encaminhamento redimensionada.
val
O valor a ser usado para preenchimento.
Observações
As funções de membro garantem que o número de elementos na lista doravante é _Newsize. Se tiver de tornar a sequência controlada mais longa, a primeira função de membro acrescenta elementos com valor Type(), enquanto a função de segundo membro acrescenta elementos com valor val. Para tornar a sequência controlada mais curta, ambas as funções de membro efetivamente chamam erase_after(begin() + _Newsize - 1, end()).
reverse
Inverte a ordem em que os elementos ocorrem em uma lista de encaminhamento.
void reverse();
size_type
Um tipo que representa a distância não assinada entre dois elementos.
typedef typename Allocator::size_type size_type;
Observações
O tipo inteiro não assinado descreve um objeto que pode representar o comprimento de qualquer sequência controlada.
sort
Organiza os elementos em ordem crescente ou com uma ordem especificada por um predicado.
void sort();
template <class Predicate>
void sort(Predicate pred);
Parâmetros
pred
O predicado de ordenação.
Observações
Ambas as funções de membro ordenam os elementos na sequência controlada por um predicado, descrito abaixo.
Para os iteradores Pi e Pj elementos de designação em posições i e j, a função de primeiro membro impõe a ordem !(*Pj < *Pi) sempre que i < j. (Os elementos são ordenados por ascending ordem.) A função de modelo de membro impõe a ordem ! pred(*Pj, *Pi) sempre que i < j. Nenhum par ordenado de elementos na sequência controlada original é revertido na sequência controlada resultante. (A classificação é estável.)
Uma exceção ocorre somente se pred lançar uma exceção. Nesse caso, a sequência controlada é deixada em ordem não especificada e a exceção é relançada.
splice_after
Remove elementos de uma origem forward_list e os insere em um destino forward_list.
// insert the entire source forward_list
void splice_after(const_iterator Where, forward_list& Source);
void splice_after(const_iterator Where, forward_list&& Source);
// insert one element of the source forward_list
void splice_after(const_iterator Where, forward_list& Source, const_iterator Iter);
void splice_after(const_iterator Where, forward_list&& Source, const_iterator Iter);
// insert a range of elements from the source forward_list
void splice_after(
const_iterator Where,
forward_list& Source,
const_iterator First,
const_iterator Last);
void splice_after(
const_iterator Where,
forward_list&& Source,
const_iterator First,
const_iterator Last);
Parâmetros
Where
A posição no destino forward_list após a qual inserir.
Source
A fonte forward_list que deve ser inserida no destino forward_list.
Iter
O elemento a ser inserido a partir da fonte forward_list.
First
O primeiro elemento no intervalo a ser inserido a partir da fonte forward_list.
Last
A primeira posição além do intervalo a ser inserido a partir da fonte forward_list.
Observações
O primeiro par de funções de membro insere a sequência controlada por Source logo após o elemento na sequência controlada apontado por Where. Ele também remove todos os elementos do Source.
&Source( não deve ser igual this.)
O segundo par de funções de membro remove o elemento logo depois Iter na sequência controlada por Source e o insere logo após o elemento na sequência controlada apontada por Where. (Se Where == Iter || Where == ++Iter, nenhuma alteração ocorrer.)
O terceiro par de funções de membro (emenda variada) insere o subintervalo designado por (First, Last) a partir da sequência controlada por Source logo após o elemento na sequência controlada apontada por Where. Ele também remove o subintervalo original da sequência controlada pelo Source. (Se &Source == this, o intervalo (First, Last) não deve incluir o elemento apontado por Where.)
Se a emenda variada insere N elementos e &Source != this, um objeto de classe iterator é incrementado N vezes.
Nenhum iterador, ponteiro ou referência que designe elementos emendados se torna inválido.
Exemplo
// forward_list_splice_after.cpp
// compile with: /EHsc /W4
#include <forward_list>
#include <iostream>
using namespace std;
template <typename S> void print(const S& s) {
for (const auto& p : s) {
cout << "(" << p << ") ";
}
cout << endl;
}
int main()
{
forward_list<int> c1{ 10, 11 };
forward_list<int> c2{ 20, 21, 22 };
forward_list<int> c3{ 30, 31 };
forward_list<int> c4{ 40, 41, 42, 43 };
forward_list<int>::iterator where_iter;
forward_list<int>::iterator first_iter;
forward_list<int>::iterator last_iter;
cout << "Beginning state of lists:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
cout << "c3 = ";
print(c3);
cout << "c4 = ";
print(c4);
where_iter = c2.begin();
++where_iter; // start at second element
c2.splice_after(where_iter, c1);
cout << "After splicing c1 into c2:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
first_iter = c3.begin();
c2.splice_after(where_iter, c3, first_iter);
cout << "After splicing the first element of c3 into c2:" << endl;
cout << "c3 = ";
print(c3);
cout << "c2 = ";
print(c2);
first_iter = c4.begin();
last_iter = c4.end();
// set up to get the middle elements
++first_iter;
c2.splice_after(where_iter, c4, first_iter, last_iter);
cout << "After splicing a range of c4 into c2:" << endl;
cout << "c4 = ";
print(c4);
cout << "c2 = ";
print(c2);
}
Beginning state of lists:c1 = (10) (11)c2 = (20) (21) (22)c3 = (30) (31)c4 = (40) (41) (42) (43)After splicing c1 into c2:c1 =c2 = (20) (21) (10) (11) (22)After splicing the first element of c3 into c2:c3 = (30)c2 = (20) (21) (31) (10) (11) (22)After splicing a range of c4 into c2:c4 = (40) (41)c2 = (20) (21) (42) (43) (31) (10) (11) (22)
swap
Troca os elementos de duas listas previsionais.
void swap(forward_list& right);
Parâmetros
right
A lista previsional com os elementos a trocar.
Observações
A função de membro troca as sequências controladas entre *this e right. Se get_allocator() == right.get_allocator(), ele faz isso em tempo constante, ele não lança exceções e não invalida referências, ponteiros ou iteradores que designam elementos nas duas sequências controladas. Caso contrário, ele executa atribuições de elementos e chamadas de construtor proporcionais ao número de elementos nas duas sequências controladas.
unique
Elimina todos, exceto o primeiro elemento, de todos os grupos consecutivos de elementos iguais.
void unique();
template <class BinaryPredicate>
void unique(BinaryPredicate comp);
Parâmetros
comp
O predicado binário usado para comparar elementos sucessivos.
Observações
Mantém o primeiro de cada elemento único e remove o resto. Os elementos devem ser classificados de modo que os elementos de igual valor sejam adjacentes na lista.
A primeira função de membro remove da sequência controlada todos os elementos que se comparam iguais ao seu elemento anterior. Para os iteradores Pi e Pj elementos de designação em posições i e j, a função de segundo membro remove todos os elementos para os quais i + 1 == j && comp(*Pi, *Pj).
Para uma sequência controlada de comprimento N (> 0), o predicado comp(*Pi, *Pj) é avaliado N - 1 vezes.
Uma exceção ocorre somente se comp lançar uma exceção. Nesse caso, a sequência controlada é deixada em um estado não especificado e a exceção é relançada.
value_type
Um tipo que representa o tipo de elemento armazenado em uma lista de encaminhamento.
typedef typename Allocator::value_type value_type;
Observações
O tipo é um sinônimo para o parâmetro de modelo Type.