Foros del Web » Programación para mayores de 30 ;) » C/C++ »

modificar una lista enlazada c++

Estas en el tema de modificar una lista enlazada c++ en el foro de C/C++ en Foros del Web. Hola a todos. estoy trabajando con la plantilla list en C++, y quisiera saber como puedo modificar un elemento de la lista, he visto q ...
  #1 (permalink)  
Antiguo 03/12/2013, 00:46
Avatar de leo_garay91  
Fecha de Ingreso: mayo-2012
Ubicación: argentina
Mensajes: 51
Antigüedad: 12 años
Puntos: 0
modificar una lista enlazada c++

Hola a todos. estoy trabajando con la plantilla list en C++, y quisiera saber como puedo modificar un elemento de la lista, he visto q la clase tiene varios metodos para recorrerla,insertar, buscar,eliminar, péro no encontre un metodo q me permita modicar.
este es una parte del codigo que estoy utilizando:

Código C++:
Ver original
  1. #include <list>
  2. #include "personas.h"
  3. ....
  4. class Agenda{
  5.  
  6. public:
  7.  
  8.          list<Persona> contactos; // lista para almacenar a las personas
  9. ...
  10. };
  11. void Agenda::altaPersona(){
  12.  
  13.        Persona newPersona; // se instacia Persona}
  14.  
  15.      contactos.push_back(newPersona); // se agrega la lista la persona, en el ultimo lugar
  16. };
  #2 (permalink)  
Antiguo 03/12/2013, 12:07
 
Fecha de Ingreso: agosto-2012
Mensajes: 601
Antigüedad: 11 años, 8 meses
Puntos: 83
Respuesta: modificar una lista enlazada c++

Puedes recorrer la lista con un iterador hasta encontrar el Persona que buscas, la desreferencia del iterador sobre ese elemento te sirve como acceso al elemento mismo. En tu ejemplo tienes una lista de Persona, cuando la tienes llena la recorres:


Código C++:
Ver original
  1. list <Persona>::iterator itr_contacto;
  2. for(itr_contacto = contactos.begin(); itr_contacto != contactos.end(); itr_contacto++) {
  3.     if((*itr_contacto).id == 123) {
  4.         (*itr_contacto).nombre = "Otro nombre";
  5.     }
  6. }

La desreferencia del iterador actua como si estuvieses trabajando directamente con el elemento que enviaste a la lista. Si p.ej. tuvieras una lista de punteros, la desreferencia del iterador actuaría igual que si trabajases sobre el puntero.

Saludos
vosk

Etiquetas: enlazada, lista, modificar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:31.