Strony

środa, 28 marca 2018

Sortowanie tablicy struktur za pomocą wbudowanej funkcji sort() [C++]

Witam was.
Kilka postów wcześniej poruszałem kwestię sortowania tablicy za pomocą funkcji sort() pochodzącej z biblioteki algorithm.
Dziś zajmiemy się sortowanie tablicy struktur.

Program jest troszkę bardziej skomplikowany, przy próbie sortowania tak jak to było opisywane w poprzednim poście dostajemy błąd.
Kompilator mówi nam że coś robimy źle, ma racje. Tak przekazaliśmy do funkcji wskaźnik na początek i na koniec jednak skąd ta funkcja ma wiedzieć po jakim polu z tej struktury ma sortować dane. Funkcja tego nie wie, to my jako programiści musimy jej to jednoznacznie zakomunikować.
Jednak jak to zrobić ?
W C++ istnieje taki mechanizm o nazwie przeciążanie funkcji.
Tak, funkcja sort() morze przyjmować dwa lub trzy argumenty.
Jeśli mamy do czynienia z typem prostym wystarczy jej  tylko wskaźnik na początek oraz koniec. Ona już sama będzie widziała jak ma ułożyć dane, domyślnie rosnąco.
Ten ostatni argument to wskaźnik na funkcje zwracającą prawdę lub fałsz ( bool ). To właśnie w tej funkcji mamy określić w jaki sposób i według jakich kryteriów mają być sortowane dane w tablicy.
W bardzo podobny sposób można sortować  tablice obiektów zbudowanych według jakiejś klasy.
Poniżej implementacja tego problemu dla struktury o nazwie Wektor2d, sortujemy po wartości x rosnąco.

Brak komentarzy:

Prześlij komentarz