Sortieren von Vektoren
-
Hallo,
ich möchte einen Vector<int> so sortieren, dass jede Zahl max einmal vorkommt!
Basp: v = 1 5 3 1 7 5 6 1 5
--> sortx(v)= 1 3 5 6 7
hat da jemand eine einfache Lösung(Algorithmus/befehl parat?!?
thx4help
PS: ich hab mal was von eine unique-Fkt gehört, die in <algorith> drin sein soll, weiß aber net, wie man die anwenden könnte...

-
google => "STL unique" "STL sort"
-
@Ben04: erstmal danke für den schnellen post. Bei deiner angegeben google-Suche kommt man auf ne Dokterarbeit, die mir nicht gerade weiterhilft *g
ich dache mir ja folgendes:
vector<int> pos_pointer (0); ...//belege pos_pointer sort(pos_pointer.begin(), pos_pointer.end()); unique (pos_pointer.begin(), pos_pointer.end());... aber das läuft leider nicht

PS: wenn ihr das lest, werdet ihr wohl sicher merken, dass die Namenswahl meiner Variablen nicht die beste ist...
-
die Zahlen stehen dann zwischen pos_pointer.begin() und dem, was std::unique zurücklifert.
vector<int> pos_pointer (0); ...//belege pos_pointer sort(pos_pointer.begin(), pos_pointer.end()); vector<int>::iterator newEnd = unique (pos_pointer.begin(), pos_pointer.end());
-
und wie kann ich mir den sortierten und verkürzten vector dann anzeigen (ohne den doppelten rest...)?!?
(ich fühl mich grade ziemlich doof...:( )
-
vector<int> pos_pointer (0); ...//belege pos_pointer sort(pos_pointer.begin(), pos_pointer.end()); vector<int>::iterator newEnd = unique (pos_pointer.begin(), pos_pointer.end()); for (vector<int>::iterator it = pos_pointer.begin(); it != newEnd; ++it) cout << it << '\n';oder
vector<int> pos_pointer (0); ...//belege pos_pointer sort(pos_pointer.begin(), pos_pointer.end()); vector<int>::iterator newEnd = unique (pos_pointer.begin(), pos_pointer.end()); copy (pos_pointer.begin(), newEnd, ostream_iterator<int>(cout, "\n");oder, oder, oder ...
-
danke für diese kleine lehrstunde

-
Du kannst auch mit "pos_pointer.erase(newEnd;pos_pointer.end());" die überflüssigen Duplikate komplett löschen.