Hola amgos, les traigo una cuestión interesantes sobre punteros. Primero tengo entendido que un iterador es un puntero de un contenedor por ejemplo:
y por tanto se puede hacer un for sobre él:
Código C++:
Ver originalfor (it = v.begin(); it != v.end(); it++){
//algo bonito;
}
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 originalector<MyClass>::iterator donde(vector<MyClass>& v, int i){
vector<MyClass>::iterator it;
for (it = v.begin(); it != v.end(); it++){
if (it->getId() == i) return it;
}
return it;
}
y luego en el main traté de incrementar el iterador con un simple it++ pero no me funciona.
Código C++:
Ver originalint main(){
vector<MyClass> v;
v.push_back(MyClass(2));
v.push_back(MyClass(8));
v.push_back(MyClass(10));
vector<MyClass>::iterator it = donde(v, i);
it++;
it->setId(-8);
cin.sync();
cin.get();
return 0;
}
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