|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
[C++] copiare parole da lista a string
Mi sono imbattuto in un problema del genere:
Data una lista di string in cui ho memorizzato un insieme di città come stringhe... voglio copiare tutte le città in una variabile string separandole ciascuna da una virgola e ordinandole secondo un ordine lessicografico. La mia ipotesi di soluzione sarebbe quella di ordinare la lista con le funzioni sort() e unique(), Poi con un ciclo for sulla lista mi copio le stringhe della lista nella variabile string e per ognuna inserisco la virgola. Forse c'è un problema però: copiando nella variabile stringa sovrascrivo ogni volta il contenuto.. dovrei usare l'operatore += per non sovrascrivere e creare la stringa con le citta separate da virgola? |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
Ancora meglio, se la lista è lunga, con l'operatore += dovresti allocare nuovo spazio ogni volta. Meglio creare una stringa della dimensione giusta all'inizio, e poi riempirla una parola alla volta. |
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
.
Ultima modifica di mistergks : 19-02-2014 alle 20:03. |
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Mar 2011
Messaggi: 1050
|
Non ho capito in che senso creare una stringa della dimensione giusta?
E poi... mi sta venendo un dubbio.. forse andrebbe usata solo la funzione sort().. perche non voglio eliminare le città ripetute! |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Jan 2012
Messaggi: 1267
|
Quote:
Codice:
int len = 0; for (const string& s : strings) len += s.size(); len += strings.size() - 1; // devi aggiungere n - 1 virgole per separare le città string result; result.reserve(len); // Ciclo per copiare le stringhe in result |
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:52.