<iterator>
Define iteradores predefinidos e iteradores de fluxo, primitivos de iterador e modelos de suporte.
Requisitos
Cabeçalho: <iterator>
Namespace: std
Comentários
Os iteradores são uma generalização de ponteiros que permitem que um programa C++ trabalhe com diferentes estruturas de dados de maneira uniforme. Em vez de operar em tipos de dados específicos, os algoritmos operam em um intervalo de valores, conforme especificado por um tipo de iterador. Os algoritmos podem operar em qualquer estrutura de dados que satisfaça os requisitos do iterador.
No C++20, há seis categorias de iteradores. Os iteradores são organizados em uma hierarquia de funcionalidade. Seus recursos são especificados pelos conceitos do C++20. Para obter uma descrição dos vários iteradores e seus recursos, consulte Conceitos do iterador
O Visual Studio adicionou extensões aos iteradores da Biblioteca Padrão do C++ para dar suporte à depuração de iteradores verificados e não verificados. Para obter mais informações, consulte Bibliotecas seguras: Biblioteca Padrão C++.
Membros
Funções
Nome | Descrição |
---|---|
advance |
Aumenta um iterador por um número especificado de posições. |
back_inserter |
Cria um iterador que pode inserir elementos no fim de um contêiner especificado. |
begin |
Recupera um iterador para o primeiro elemento em um contêiner especificado. |
cbegin |
Recupera um iterador somente leitura para o primeiro elemento em um contêiner especificado. |
cend |
Recupera um iterador somente leitura para o elemento que segue o último elemento no contêiner especificado. |
crbegin |
Obtenha um iterador somente leitura reverso para o início do contêiner especificado. |
crend |
Obtenha o sentinela no final do que crbegin() retorna. |
data |
Obtenha um ponteiro para o primeiro elemento no contêiner especificado. |
distance |
Determina o número de incrementos entre as posições tratadas por dois iteradores. |
end |
Recupera um iterador para o elemento que segue o último elemento no contêiner especificado. |
empty |
Teste se o contêiner especificado está vazio. |
front_inserter |
Cria um iterador que pode inserir elementos na frente de um contêiner especificado. |
inserter |
Um adaptador de iterador que adiciona um novo elemento a um contêiner em um ponto de inserção especificado. |
make_checked_array_iterator |
Cria um checked_array_iterator que pode ser usado por outros algoritmos. Observação: essa função é uma extensão da Biblioteca Padrão C++ da Microsoft. O código implementado usando essa função não é portátil para ambientes de build padrão do C++ que não dão suporte a essa extensão da Microsoft. |
make_move_iterator |
Retorna um iterador de movimentação que contém o iterador fornecido como o seu iterador de base armazenado. |
make_unchecked_array_iterator |
Cria um unchecked_array_iterator que pode ser usado por outros algoritmos. Observação: essa função é uma extensão da Biblioteca Padrão C++ da Microsoft. O código implementado usando essa função não é portátil para ambientes de build padrão do C++ que não dão suporte a essa extensão da Microsoft. |
next |
Itera um número de vezes especificado e retorna a nova posição do iterador. |
prev |
Itera em ordem inversa um número de vezes especificado e retorna a nova posição do iterador. |
rbegin |
Obtenha um iterador reverso para o início do contêiner especificado. |
rend |
Obtenha um iterador reverso para o sentinela no final do contêiner especificado. |
size |
Obtenha o número de elementos. |
Operadores
Nome | Descrição |
---|---|
operator!= |
Testa se o objeto iterador no lado esquerdo do operador não é igual ao objeto iterador no lado direito. |
operator== |
Testa se o objeto de iterador à esquerda do operador é igual ao objeto de iterador à direita. |
operator< |
Testa se o objeto de iterador à esquerda do operador é menor que o objeto de iterador à direita. |
operator<= |
Testa se o objeto de iterador à esquerda do operador é menor ou igual ao objeto de iterador à direita. |
operator> |
Testa se o objeto de iterador à esquerda do operador é maior que o objeto de iterador à direita. |
operator>= |
Testa se o objeto de iterador à esquerda do operador é maior ou igual ao objeto de iterador à direita. |
operator+ |
Adiciona um deslocamento a um iterador e retorna o novo reverse_iterator que trata o elemento inserido na nova posição de deslocamento. |
operator- |
Subtrai um iterador de outro e retorna a diferença. |
Classes
Nome | Descrição |
---|---|
back_insert_iterator |
O modelo de classe descreve um objeto iterador de saída. Ele insere elementos em um contêiner do tipo Container , que acessa por meio do objeto pointer protegido que é armazenado no contêiner chamado. |
bidirectional_iterator_tag |
Uma classe que fornece um tipo de retorno para uma função iterator_category que representa um iterador bidirecional. |
checked_array_iterator |
Uma classe que acessa uma matriz usando um iterador verificado de acesso aleatório. Observação: essa classe é uma extensão da Microsoft da Biblioteca Padrão C++. O código implementado usando essa função não é portátil para ambientes de build padrão do C++ que não dão suporte a essa extensão da Microsoft. |
forward_iterator_tag |
Uma classe que fornece um tipo de retorno para uma função iterator_category que representa um iterador de avanço. |
front_insert_iterator |
O modelo de classe descreve um objeto iterador de saída. Ele insere elementos em um contêiner do tipo Container , que acessa por meio do objeto pointer protegido que é armazenado no contêiner chamado. |
input_iterator_tag |
Uma classe que fornece um tipo de retorno para uma função iterator_category que representa um iterador de entrada. |
insert_iterator |
O modelo de classe descreve um objeto iterador de saída. Ele insere elementos em um contêiner do tipo Container , que acessa por meio do objeto pointer protegido que é armazenado no contêiner chamado. Também armazena o objeto iterator protegido, de classe Container::iterator , chamado iter . |
istream_iterator |
O modelo de classe descreve um objeto iterador de entrada. Ele extrai objetos de classe Ty de um fluxo de entrada, que ele acessa por meio de um objeto que ele armazena, do tipo ponteiro para basic_istream<Elem, Tr> . |
istreambuf_iterator |
O modelo de classe descreve um objeto iterador de entrada. Ele insere elementos de classe Elem em um buffer de fluxo de saída, que ele acessa por meio de um objeto que armazena, do tipo pointer .basic_streambuf<Elem, Tr> |
iterator |
O modelo de classe é usado como um tipo base para todos os iteradores. |
iterator_traits |
Uma classe auxiliar de modelo que fornece os tipos importantes associados aos diferentes tipos de iterador, de modo que eles possam ser referenciados da mesma forma. |
move_iterator |
Um objeto move_iterator armazena um iterador de acesso aleatório do tipo RandomIterator . Comporta-se como um iterador de acesso aleatório, exceto quando desreferenciado. O resultado de operator* é implicitamente convertido em value_type&&: para criar uma rvalue reference . |
ostream_iterator |
O modelo de classe descreve um objeto iterador de saída. Ele insere objetos de classe Type em um fluxo de saída, que ele acessa por meio de um objeto que armazena, do tipo pointer .basic_ostream<Elem, Tr> |
ostreambuf_iterator |
O modelo de classe descreve um objeto iterador de saída. Ele insere elementos de classe Elem em um buffer de fluxo de saída, que ele acessa por meio de um objeto que ele armazena, do tipo ponteiro para basic_streambuf<Elem, Tr> . |
output_iterator_tag |
Uma classe que fornece um tipo de retorno para a funçãoiterator_category que representa um iterador de saída. |
random_access_iterator_tag |
Uma classe que fornece um tipo de retorno para a funçãoiterator_category que representa um iterador de acesso aleatório. |
reverse_iterator |
O modelo de classe descreve um objeto que se comporta como um iterador de acesso aleatório, apenas ao contrário. |
unchecked_array_iterator |
Uma classe que acessa uma matriz usando um iterador não verificado de acesso aleatório. Observação: essa classe é uma extensão da Microsoft da Biblioteca Padrão C++. O código implementado usando essa função não é portátil para ambientes de build padrão do C++ que não dão suporte a essa extensão da Microsoft. |
Conceitos
Os conceitos a seguir são definidos no std
namespace. Eles se aplicam a iteradores e também estão relacionados às categorias de iteradores para intervalos descritos em <ranges>
conceitos.
Conceito de iterador | Descrição |
---|---|
bidirectional_iterator C++20 |
Especifica um iterador que pode ler e gravar para frente e para trás. |
contiguous_iterator C++20 |
Especifica um iterador cujos elementos são sequenciais na memória, do mesmo tamanho e podem ser acessados usando aritmética de ponteiro. |
forward_iterator C++20 |
Especifica um iterador que pode ler (e possivelmente gravar) várias vezes. |
input_iterator C++20 |
Especifica um iterador que você pode ler pelo menos uma vez. |
input_or_output_iterator C++20 |
A base da taxonomia do conceito do iterador. |
output_iterator |
Especifica um iterador no qual você pode gravar. |
random_access_iterator C++20 |
Especifica um iterador que você pode ler e gravar por índice. |
sentinel_for C++20 |
Especifica um sentinela para um tipo de iterador. |
sized_sentinel_for C++20 |
Especifica que um iterador e seu sentinela podem ser subtraídos (usando - ) para encontrar sua diferença em tempo constante. |
Confira também
Referência de Arquivos de Cabeçalho
Acesso Thread-Safe na Biblioteca Padrão C++
Referência da biblioteca padrão C++