ho i seguenti dati:Spingendo dati unici nel vettore
FolioA Name1 100
FolioA Name2 110
FolioA Name3 100
FolioB Name1 100
FolioB Name3 106
FolioC Name1 108
FolioC Name2 102
FolioC Name3 110
voglio inserire solo nomi unici (cioè Name1, Nome2 e NAME3, ogni volta) in
std::vector<std::string> name;
come ho iterare attraverso i dati.
Così, ho il seguente codice dove ho memorizzato i dati in una mappa chiamata di prova:
std::map<std::string, std::map<std::string, double> >test;
std::map<std::string, std::map<std::string, double > >::iterator it1 = test.begin(), end1 = test.end();
while (it1 !=end1) {
std::map<std::string, double>::iterator it2 = it1->second.begin(), end2=it1->second.end();
**name.push_back(it2->first);**
++it2;
}
++it1;
}
Ma, attualmente spingendo i dati nel nome il modo in cui io sono ha 3 istanze di Name1, 2 di Name2 e 3 di Name3, che è previsto dal mio codice. Come faccio a correggerlo per avere solo nomi univoci.
Come sceglieresti quale istanza includere? – juanchopanza
Devi avere un 'vector' di nomi? Suggerirei invece di usare un set di nomi per questo. Se devi avere un vettore, puoi comunque inserire prima in un set, quindi spostare gli oggetti in un 'vector' usando il sovraccarico del costruttore che prende' iterator's. – Chad
@juanchopanza, sceglierei la prima istanza di ciascuna, quindi se il vettore contiene già (Nome1, Nome2, Nome3), quindi quando raggiunge il 4 ° record, identifica che il record esiste già, quindi lo salta e va al prossimo record. – user1155299