2016-04-20 6 views
4

Ich habe einen Vektor, dass der Benutzer einige Zeichenfolgen eingibt. Ich möchte die Reihenfolge beibehalten, die der Benutzer eingibt, aber doppelte Wörter löschen. Das einzige, was ich online finden konnte, ist sort und einzigartig, aber da ich den Vektor nicht sortieren kann, stecke ich fest. Vielen Dank im Voraus für jede Hilfe.Wie lösche Duplikate in Vektor (ohne Sortierung) C++

e.x. Eingabe von Benutzer -> hallo es Hund, Katze, hallo Katze Buch

sollte Vektor haben -> hallo dort, Hund, Katze Buch

jetzt alles, was ich habe, ist ...

string s; 
vector <string> myVec; 

while (cin >> s){ 
myVec.push_back(s); 
} 

{code to sort vector} 

Antwort

9

Neben Ihrem vector , können Sie testen, ob das Wort bereits in einer std::set<std::string> ist, ignorieren Sie es, wenn dies der Fall ist, andernfalls wird es in beide Container eingefügt:

while (cin >> s) 
    if (mySet.insert(s).second) // newly inserted in set? 
     myVec.push_back(s);