PDA

Visualizza la versione completa : [c++stl]mappe e transcodifica


giuseppe500
10-11-2009, 13:10
Ciao.
Devo poter recuperare o settare il valore di un dato.
E devo poterlo fare con l'indice intero o con l'indice stringa ma vorrei mantenere una sola mappa che contiene i valori.
gli indici non sono consecutivi.
ho pensato:


//indici
mapIndexInt[0]="indice0";
mapIndexInt[5]="indice1";

//valori
mapValue["indice0"]="aaaaaaa"
mapValue["indice1"]="bbbbbb"
mapValue["indice2"]="ccccccc"

void setValue0ConInt(string value){
string strIndice= mapIndexInt[0];//la funzione si chiama setValue0....= 0
mapValue[strIndice] = value;
};

void setValue0ConText(string value){

mapValue["indice0"] = value;//la funzione si chiama setValue0 ... = 0
}

string getValue0ConInt(){

string strIndice= mapIndexInt[0];//v.sopra = 0
return mapValue[strindice];

}
string getValue0ConText(){

return mapValue["indice0"]//v sopra =0 = indice0
}


E' sbagliato come metodo?
voi come lo fareste?
Grazie.

shodan
10-11-2009, 13:37
Non puoi semplicemente convertire l'int in stringa?


string getValue0ConInt(){

ostringstream oss;
oss << "indice"<< 0;
return mapValue[oss.str()];

}
string getValue0ConText(){

return mapValue["indice0"]//v sopra =0 = indice0

}

giuseppe500
10-11-2009, 15:01
no , scusa shodan se mi sono espresso male ,ho utilizzato indice0, indice1 ecc... per esempio , nel mio progetto hanno nomi generici non legati alla costruzione di indice con numeri.
grazie.

shodan
10-11-2009, 18:13
Nessun problema :)
Se numeri e stringhe non sono relazionabili, la tua soluzione mi sembra l'unica possibile.
L'unica cosa che valuterei č l'accesso a mapValue tramite int invece della stringa.
Da l'idea di essere pių veloce.

Loading