Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Iterador bidirecional
  2. Declarar um iterador bidirecional
  3. Uso dos operadores
  4. métodos

O tipo de iterador bidirecional suporta as mesmas características do tipo forward com a diferença que possui a capacidade de ser bidirecional. Esse iterador é utiizado por List, Set, Multiset, Map e Multimap.

Tab. 1: Abstração de um iterador
begin referência 1 referência 2 (...) referência N end
elemento 1 elemento 2 elemento 3 (...) elemento N -
Características
  1. Poder ser incrementado
  2. Poder ser decrementado
  3. Utilizado para leitura de dados
  4. Utilizado para escrita de dados
  5. Utiliza * para leitura/escrita de dados

Para utilizarmos o tipo de dado iterator, precisamos incluir a biblioteca chamada iterator.

Sintaxe
#include <iterator>

A declaração de um objeto do tipo iterator bidirecional é feita utilizando o tipo iterador acessado com o operador (::) proveniente da coleção desejada.

Sintaxe
tipo_dado<tipo_do_elemento>::iterador nome_iterador;
Onde
tipo_dado : coleção ou contêiner bidirecional
tipo_do_elemento: tipo de dado do elemento

No exemplo abaixo, vamos utilizar o tipo de dado list para demostração do iterador bidirecional. Esse tipo de dados pode ser visto com mais detalhes em C++ EDD: List.

Exemplo 1
#include <iostream>
#include <list>

using namespace std;

int main ()
{
  list<int> lst = {1,2,3};
  list<int>::iterator it;
  return 0;
}
Saída
-

Os métodos prev e advance vistos em não podem ser utilizados com o tipo de iterador forward.

Podemos realizar algumas operações aritméticas e relacionais em um iterador do tipo bidirecional de acordo com a tabela abaixo:

Tab 2. : Operadores
Operador Exemplo
= iterador1 = iterador2
== iterador1 == iterador2
!= iterador1 != iterador2
++ iterador1++
-- iterador1--
* *iterador1

No exemplo abaixo, utilizamos o comando for, visto em C++: Comandos de Repetição, em que usamos seus blocos de iniciação, verificação e incremento para declarar expressões usando os operadores vistos acima:

Exemplo 2
#include <iostream>
#include <list>

using namespace std;

int main ()
{
  list<int> lst = {1,2,3};
  list<int>::iterator it;
  
  for(it = lst.begin() ; it != lst.end(); it++)
       cout << *it << " ";

  return 0;
Saída
1 2 3

Em caso de dúvidas, os operadores acima foram vistos em C++: Operadores e C++: Ponteiros sendo a leitura recomendada.

  1. 01/08/2025 - revisão 4 - Ajustes pontuais, sintaxes e target de links internos
  2. 27/09/2024 - revisão 3 - Adição: links internos em 'Operadores'; Ajustes pontuais
  3. 30/08/2024 - revisão 2 - Correção em links de objetivos
  4. 09/02/2024 - revisão 1 - correção em navegação,css e erros gramaticais
  5. 30/06/2023 - versão inicial