c++ lista dentro map problema

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
rfringuello89
Linux 2.x
Linux 2.x
Messaggi: 246
Iscritto il: sab 21 feb 2009, 18:47
Nome Cognome: Renato Fringuello
Slackware: 64 current
Kernel: 3.13.3
Desktop: kde 4.12.4 [Alien]

c++ lista dentro map problema

Messaggio da rfringuello89 »

Salve a tutti, mi sto affacciando nel mondo c++. Per risolvere un problema ho una map di oggetti Foo i quali contengono al loro interno una lista di altri oggetti Custom diversi dai precedenti.
Per intenderci:
.....
class Foo{
.....
private:
std::list <Custom> lista;
.....
};
....
main(){
...
std::map<string, Foo> mappa;
...
};

Il mio problema è nell'aggiunta di elementi alle varie liste degli elementi Foo infatti quando dalle funzioni di inserimento in lista inserisco uno o più elementi, al ritorno al main non ci sono elementi nella lista. Questo presumo accada in quanto prima cerco l'elemento Foo che mi serve tramite .find(key) e ne creo una copia su cui lavorare e, essendo una copia, l'elemento della map non viene in realtà modificato.
Vorrei qualche consiglio su come agire in questo caso sperando di essermi spiegato al meglio!
"When you know Slackware, you know Linux… when you know Red Hat, all you know is Red Hat."

legura
Linux 0.x
Linux 0.x
Messaggi: 14
Iscritto il: mer 23 mar 2011, 12:07

Re: c++ lista dentro map problema

Messaggio da legura »

non è che stai lavorando su una copia di 'Mappa' ?

del tipo:

void
inserisci_in_mappa(std::map<string, Foo> m )
{
// le modifiche a m sono locali alla funzione
}

void
inserisci_in_mappa_2(std::map<string, Foo>* m )
{
// le modifiche a m saranno visibili anche in main
}



main(){
...
std::map<string, Foo> mappa;

// mappa viene modificato
inserisci_in_mappa_2(mappa ) ;

// mappa NON viene modificato, perchè la funzione lavora su una copia sua locale di mappa
inserisci_in_mappa(mappa ) ;



};

Avatar utente
rfringuello89
Linux 2.x
Linux 2.x
Messaggi: 246
Iscritto il: sab 21 feb 2009, 18:47
Nome Cognome: Renato Fringuello
Slackware: 64 current
Kernel: 3.13.3
Desktop: kde 4.12.4 [Alien]

Re: c++ lista dentro map problema

Messaggio da rfringuello89 »

Salve, grazie per la risposta. Penso di aver risolto, l'errore era banale e sintattico! La risposta è stata molto utile confermandomi che questi tipi di dato devono essere passati per riferimento.
"When you know Slackware, you know Linux… when you know Red Hat, all you know is Red Hat."

Rispondi