[C con Clase] Saludos !!! - Cómo eliminar objetos de vector y agregarlos a otro vector.

Miguel Ángel Torres Fernández-Píñar miguelangeltorresfp en gmail.com
Dom Jul 20 10:40:16 CEST 2014


Buenos días Jose Roberto y muchas gracias por tu respuesta.

Supongo que en tu ejemplo tendría que ser :

nuevo.push_back(obj);
vec.erase(it);

Creo que lo pusistes al revés de cómo me decías, no ???

Profundizo un poco más en el problemas.
En los contenedores estoy guardando objetos del tipo :
Shared_Ptr<Obj> . Pero usando una clase punteros de mi profe, no la que
viene con C++ 11.
Así que creo que no me sirve lo de crearme una variable local porque de
igual modo, al estar todo esto metido en un método, al final del método se
destruye todo.

Uf, no sé, estoy hecho un lío, pero sí, el tema va por donde tú dices Jose
Roberto.

Muchas gracias.


El 20 de julio de 2014, 5:43, Jose Roberto <joser1993 en gmail.com> escribió:

> Probablemente estes usando el mismo objeto que tiene el iterador que
> recorre el primer vector y estes eliminando el contenido del iterador antes
> de agregar el objeto al segundo vector. Es decir, que estes eliminando el
> objeto una vez que lo eliminas del vector. Si este es el caso, considera
> guardar el objeto en una variable auxiliar y usala para agregar ese objeto
> al segundo vector, eso seria lo mas didactico. Pero lo considerable es que
> si consigues un objeto que debas agregar al otro vector, se deberia agregar
> primero el objeto y despues eliminarlo del vector original.
>
> Espero que con este codigo se entienda un poco mas la idea
>
> #include <vector>
> #include <iostream>
>
> using namespace std;
>
>
> int main(){
> vector<int> vec;
>         for(int i=0; i<6; i++){
>                 vec.push_back(i);
>         }
>
> vec<int> nuevo;
>         vec<int>::iterator it;
>         int obj; // Este ejemplo consideremoslo como objetos tipo int
>         for(it=vec.begin(); it!=vec.end();it++){
>                 obj=*it;
>                 if(obj%2==0){
>                         vec.erase(it);
>                         nuevo.push_back(obj);
>                 }
>         }
>
> for(it=nuevo.begin(); it!=nuevo.end(); it++){
>                 cout<<*it<<endl;
>         }
> }
>
> Saludos
>
>
> El 19 de julio de 2014, 20:36, Facundo Curti <facu.curti en gmail.com>
> escribió:
>
> El día 19 de julio de 2014, 23:16, Miguel Ángel Torres Fernández-Píñar
>> <miguelangeltorresfp en gmail.com> escribió:
>> > Hola, saludos a todos.
>> >
>> > Recorre un contenedor de objetos mediante iteradores.
>> >
>> > Elimino sin problemas un elemento de este contenedor.
>> >
>> > Pero mi problema viene cuando quiero agregar justo este elemento a otro
>> > contenedor.
>> >
>> > No sé cómo hacer esto.
>> >
>> > Se agrega pero luego el programa falla por algún problema de memoria.
>> >
>> > No sé si con estos datos del problema es suficiente.
>> >
>> > Gracias y saludos !!!
>> >
>> > _______________________________________________
>> > Lista de correo Cconclase Cconclase en listas.conclase.net
>> >
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>> Seria bueno que subieras el código para que podamos ayudarte.
>> Seguramente estas escribiendo fuera de los limites. No puedes guardar
>> 2 litros de agua en una botella de 500cc. Seguramente lo mismo estas
>> haciendo con el arreglo. De ser así, tendrías que ver de asignarle
>> memoria con malloc.
>> Repito, seria bueno que colocaras el código, así podremos ayudarte.
>>
>> Saludos! ;)
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
>
> --
> José Roberto
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20140720/96db051a/attachment.html>


Más información sobre la lista de distribución Cconclase