|
|||||||
|
|
|
![]() |
|
|
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 21: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: 18:17.




















