Heyho,Sortowanie wektor par
mam pytanie o sortowaniu wektor par:
std::vector<std::pair<double,Processor*>> baryProc;
ten wektor jest już wypełniona parami. Teraz chciałem uporządkować pary wewnątrz wektora opartego na podwójnej wartości wewnątrz pary
PRZYKŁAD:
Załóżmy, że mam 3 pary wewnątrz wektora. pair1 znajduje się z przodu, a para 3 na końcu. pair2 jest w środku:
pair1(1, proc1)
pair2(3, proc2)
pair3(2.5, proc3)
teraz chcę, aby posortować pary w oparciu o podwójną wartość. Aby zamówienie w wektorze było:
pair1(1, proc1)
pair3(2.5, proc3)
pair2(3, proc2)
Jak mogłem to zrobić? Jestem całkiem tknięty.
Dzięki za pomoc
+1 dobry przykład wyeliminowania porównania '.second' z normalnego operatora less 'std :: pair'. Wolałbym dla tego funktora (częściej inline), ale funkcjonalne rozwiązanie działa bez żadnych ograniczeń. – WhozCraig
Dzięki za to dobre wyjaśnienie. Domyślam się, że standardowy komparator będzie działał dobrze. Czy sortowanie według standardowego sortowania jest prawidłowe, jeśli podwójne wartości często są takie same? np .: (1, proc1), (1, proc2), (2, proc3), (3, proc4), (3, proc5), .... – user2633791
@ user2633791 To, o co pytasz, to czy sortowanie jest [stabilny] (http://en.wikipedia.org/wiki/Stable_sort#Stability). Algorytm sortowania jest stabilny, jeśli dwa elementy o tej samej wartości pozostają w tej samej kolejności względem siebie na końcu sortowania, tak jak na początku. Domyślny algorytm sortowania nie jest stabilny, ale STL zapewnia [stabilny sort] (http://www.cplusplus.com/reference/algorithm/stable_sort/), który powinien odpowiadać twoim celom. – maditya