Heyho,Sorting einen Vektor von Paaren
i habe eine Frage über einen Vektor von Paaren Reihenfolge:
std::vector<std::pair<double,Processor*>> baryProc;
dieser Vektor bereits mit der paarweise gefüllt ist. Jetzt wollte ich die Paare innerhalb des Vektors auf dem doppelten Wert innerhalb des Paares
Beispiel sortieren:
nehme ich habe 3 Paare innerhalb des Vektors. pair1 ist vorne und pair 3 ist am Ende. pair2 ist in der Mitte:
pair1(1, proc1)
pair2(3, proc2)
pair3(2.5, proc3)
jetzt möchte ich die Paare basierend auf dem doppelten Wert sortieren. So dass die Reihenfolge innerhalb des Vektors ist:
pair1(1, proc1)
pair3(2.5, proc3)
pair2(3, proc2)
Wie könnte ich das tun? Ich bin ziemlich festgefahren.
Danke für die Hilfe
+1 ein gutes Beispiel für das Eliminieren des '.second' Vergleichs vom normalen less-Operator von' std :: pair'. Ich würde einen Funktor dafür bevorzugen (eher inline), aber eine funktionale Lösung funktioniert trotzdem. – WhozCraig
Danke für diese gute Erklärung. Ich schätze, der Standardkomparator wird gut funktionieren. Würde Standart Oparator richtig sortieren, wenn doppelte Werte oft gleich sind? zB: (1, proc1), (1, proc2), (2, proc3), (3, proc4), (3, proc5), .... – user2633791
@ user2633791 Was Sie fragen ist, ob die Art ist [stabil] (http://en.wikipedia.org/wiki/Stable_sort#Stability). Ein Sortieralgorithmus ist stabil, wenn zwei Elemente mit dem gleichen Wert am Ende der Sortierung in der gleichen Reihenfolge zueinander stehen wie am Anfang. Der Standard-Sortieralgorithmus ist nicht stabil, aber STL bietet eine [stable sort] (http://www.cplusplus.com/reference/algorithm/stable_sort/), die für Ihre Zwecke geeignet sein sollte. – maditya