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!
c++ lista dentro map problema
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.
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.
- rfringuello89
- 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
"When you know Slackware, you know Linux… when you know Red Hat, all you know is Red Hat."
Re: c++ lista dentro map problema
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 ) ;
};
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 ) ;
};
- rfringuello89
- 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
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."