PDA

View Full Version : [C++] Vector di map


Unrue
25-09-2008, 13:25
Ciao a tutti,
devo usare un vector di map:

vector <map<string,double> > vettore_mappe;

Per inserire le mappe però, credo che non vada bene una cosa di questo tipo:

map <string,double> mappa;
for(...){
// riempo la mappa
vettore_mappe.push_back(mappa);
}

Questo perché sovrascrivo continuamente la mappa precedente. Quindi devo creare N istanze di map, una per ogni inserimento o c'è un altro modo? Grazie :)

tomminno
25-09-2008, 13:34
Ciao a tutti,
devo usare un vector di map:

vector <map<string,double> > vettore_mappe;

Per inserire le mappe però, credo che non vada bene una cosa di questo tipo:

map <string,double> mappa;
for(...){
// riempo la mappa
vettore_mappe.push_back(mappa);
}

Questo perché sovrascrivo continuamente la mappa precedente. Quindi devo creare N istanze di map, una per ogni inserimento o c'è un altro modo? Grazie :)

Il codice che hai scritto copia tutte le volte la mappa all'interno del vector, quindi fa quello che ti aspetti. Magari metti un clear della mappa all'inizio del for.
In linguaggi managed dovresti ogni volta fare il new perchè lavorano per riferimento di oggetti (eccetto le stringhe di C# che lavorano per copia ;) )

Unrue
25-09-2008, 13:46
Il codice che hai scritto copia tutte le volte la mappa all'interno del vector, quindi fa quello che ti aspetti. Magari metti un clear della mappa all'inizio del for.
In linguaggi managed dovresti ogni volta fare il new perchè lavorano per riferimento di oggetti (eccetto le stringhe di C# che lavorano per copia ;) )

Però un momento, lui non copia tante volte il riferimento della mappa nel vector? Quindi cambiandolo ogni volta faccio casino. O no?

tomminno
25-09-2008, 14:05
Però un momento, lui non copia tante volte il riferimento della mappa nel vector? Quindi cambiandolo ogni volta faccio casino. O no?

No copia proprio la mappa creando un altro oggetto.

Unrue
25-09-2008, 14:35
No copia proprio la mappa creando un altro oggetto.

Ok, grazie ;)