PDA

Visualizza la versione completa : [C++] Ottenere gli elementi univoci da una lista


freetom
16-08-2009, 23:16
Ho questo cod.



cout << "\n";cout << "mylist UNIQUE contains:";
for (list<int>::iterator it=mylist.begin(); it!=mylist.end(); ++it)
cout << " " << *it;
string numero3;
string passaggio =*it;
numero3 = intToString(passaggio);
combinazioneintera+=numero3;
combinazioneintera+=",";

cout << endl;
cin.get();


Avrei necessitÓ di prendere... gli elementi univoci della lista e metterli in una stringa separati da virgola...

Solo che con i passaggi sopra non ottengo molto... :dh˛:
Anzi solo questo errore per me alquanto indecifrabile... :oVVoVe:

139 C:\tom\exp15.cpp name lookup of `it' changed for new ISO `for' scoping

Grazie a chi mi dice come fare per prendere... gli elementi da una list e trasformarli in stringa...


:ciauz:

codesnippet
17-08-2009, 00:31
Sicuramente un for non ti basta (se la lista non contiene elementi univoci). Ne servono due, uno ti serve per scorrere l'elemento, l'altro scorre di nuovo tutta la lista e vede se quell'elemento Ŕ presente una sola volta. Se lo Ŕ ok, e lo metti dentro, altrimenti no.

L'errore Ŕ dovuto al fatto che lo scope dell'iteratore Ŕ relativo al for, mentre tu lo usi fuori.


int c;
string s="";

for (list<int>::iterator it=mylist.begin(); it!=mylist.end(); it++) {
c=0;
for(list<int>::iterator et=mylist.begin(); et!=mylist.end(); et++)
if(*et == *it)
c++;

if(c == 1)
s += intToString(*it) + ",";
}
cout<<s.substr(0, s.length()-1)<<endl;


Se la lista contiene giÓ elementi univoci allora basta un for


string s="";

for (list<int>::iterator it=mylist.begin(); it!=mylist.end(); it++)
s += intToString(*it) + ",";

cout<<s.substr(0, s.length()-1)<<endl;

Loading