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.