Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/02/2016, 18:21
dmorill
 
Fecha de Ingreso: junio-2014
Mensajes: 144
Antigüedad: 10 años, 4 meses
Puntos: 1
Incrementar un iterador de un vector<MyClass>

Hola amgos, les traigo una cuestión interesantes sobre punteros. Primero tengo entendido que un iterador es un puntero de un contenedor por ejemplo:
Código C++:
Ver original
  1. vector<in>::iterator it;
y por tanto se puede hacer un for sobre él:
Código C++:
Ver original
  1. for (it = v.begin(); it != v.end(); it++){
  2.         //algo bonito;
  3.     }
Sin embargo, cree una función que me retorna un iterador, lo que hace es buscar en un vector de una clase por ejemplo, el elemento que sea igual a un número y me retorna su posición como iterador:
Código C++:
Ver original
  1. ector<MyClass>::iterator donde(vector<MyClass>& v, int i){
  2.     vector<MyClass>::iterator it;
  3.     for (it = v.begin(); it != v.end(); it++){
  4.         if (it->getId() == i) return it;
  5.     }
  6.     return it;
  7. }
y luego en el main traté de incrementar el iterador con un simple it++ pero no me funciona.

Código C++:
Ver original
  1. int main(){
  2.     vector<MyClass> v;
  3.     v.push_back(MyClass(2));
  4.     v.push_back(MyClass(8));
  5.     v.push_back(MyClass(10));
  6.    
  7.     vector<MyClass>::iterator it = donde(v, i);
  8.     it++;
  9.     it->setId(-8);
  10.  
  11.     cin.sync();
  12.     cin.get();
  13.     return 0;
  14. }

Todo funciona bien excepto el incremento, no sé bien cual es el problema pues según la aritmética de punteros si que puedo hacer eso.

saludos