[Dúvida] Uso do Iterator da classe Vector / Uso do operador Const

Olá, pessoal do GUJ!

Tudo bem??

Surgiu uma dúvida ao trabalhar com o iterator de um vector meu!

Vejam só o trecho de código:

vector<Palavra>::iterator it = palavras.begin();

   while (it != palavras.end()) {

	  int i = *it->getId(); //<---------------

	  if (i == id) {

		 it = palavras.erase(it);
	  } else {

		 ++it;
	  }
   }

O problema se situa na linha apontada acima.
Invalid indirection.

Alguém tem idéia?

Aproveitando o tópico, há uma dúvida também com o operador const.
Qual o intuito de possuir o operador no exemplo abaixo?

Desde já, grato pela ajuda!!

[]s

  1. Conforme você percebeu, é um problema de indireção. Use:
 vector<Palavra>::iterator it = palavras.begin();  
   
    while (it != palavras.end()) {  
   
       int i = it->getId(); // ou então (*it).getId();
   
       if (i == id) {  
   
          it = palavras.erase(it);  
       } else {  
   
          ++it;  
       }  
    } 
  1. “const” não é um operador e sim uma palavra-chave, de múltiplos significados.
    Nesse caso em específico, “const” indica que o “this” é const, ou seja, você só pode usar métodos e usar variáveis-membro de tal modo que considerem o “this” como const. Se o método pertence à classe XYZ, então this, em vez de ter o tipo “XYZ*”, tem o tipo “XYZ const *”.

@entanglement

Cara, deu certinho!!

Só não entendi muito bem sobre o const

Tem algum link que possa me indicar para ler sobre?

[]s