Partilhar via


<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_iteratorC++20 Especifica um iterador que pode ler e gravar para frente e para trás.
contiguous_iteratorC++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_iteratorC++20 Especifica um iterador que pode ler (e possivelmente gravar) várias vezes.
input_iteratorC++20 Especifica um iterador que você pode ler pelo menos uma vez.
input_or_output_iteratorC++20 A base da taxonomia do conceito do iterador.
output_iterator Especifica um iterador no qual você pode gravar.
random_access_iteratorC++20 Especifica um iterador que você pode ler e gravar por índice.
sentinel_forC++20 Especifica um sentinela para um tipo de iterador.
sized_sentinel_forC++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++