Objetivos
Bidirecional
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
- Poder ser incrementado
- Poder ser decrementado
- Utilizado para leitura de dados
- Utilizado para escrita de dados
- Utiliza * para leitura/escrita de dados
Para utilizarmos o tipo de dado iterator, precisamos incluir a biblioteca chamada iterator.
Sintaxe
#include <iterator>
Declaração
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.
Histórico de atualizações
- 01/08/2025 - revisão 4 - Ajustes pontuais, sintaxes e target de links internos
- 27/09/2024 - revisão 3 - Adição: links internos em 'Operadores'; Ajustes pontuais
- 30/08/2024 - revisão 2 - Correção em links de objetivos
- 09/02/2024 - revisão 1 - correção em navegação,css e erros gramaticais
- 30/06/2023 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.