[C con Clase] [c con clase] eliminar elemento Vector
Programante
programante en gmail.com
Lun Ago 27 15:53:11 CEST 2007
Roberto Vivancos Galiano escribió:
> Hola
>
> estoy tratando de hacer un ejercicio que pida por pantalla un numero que
> pueda estar o no incluido en un vector, que guarda los primeros diez
> numeros pares:
>
> este es la funcion eliminar... pero no borra nada...
>
> bool eliminar (vector<int> &v, int x){
> vector<int>::iterator it;
> for (it =v.begin();it=v.end(); it++){
> if(*it == x){
>
>
> v.erase(it);
> cout << "borrando" << endl;
> return true;
> }else {
>
> cout << "no borrado" << endl;
> return false;
> }
>
> }
> }
>
>
El problema está en el if.
Coges el primer elemento, si es el que buscas, lo borras y sales
(correcto si sólo puede estar una vez en el vector).
Pero si el que buscas no es el primer elemento, no lo borras y *sales
también*. Con lo cual no miras los demás elementos del vector.
Mueve el return false fuera del bucle for, para que se ejecute cuando se
hayan probado todos los elementos del vector.
Más información sobre la lista de distribución Cconclase