Sortowanie wektora obiektów.

Sortowanie wektora obiektów.
bl4ster
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Lublin
  • Postów: 197
0

Mam klasę:

Kopiuj
 class Klasa{
public:
    int getNumber (){
        return this->number;
    };
    string getWord(){
        return this->word;
    };
private:
    int number;
    string word;
}

umieszczam teraz sobie obiekty tej klasy do wektora vector <Klasa> listOfKlasa.
Teraz chciałbym posortować ten wektor wg np. zmiennej number.
Napisałem sobie funkcję sortującą quick sort, która porównuje listOfKlasa[i].getNumber, ale zamienia miejscami całe obiekty. Funkcja działa.
Moje pytanie brzmi, czy istnieje jakaś funkcja w STL, QT lub innej popularnej bibliotece, która pozwalałaby na takie sortowanie?

Wydaje mi się, że takie sortowanie wg pola obiektu jest dość częstym zadaniem stąd moje pytanie.

twonek
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2500
4
Kopiuj
std::sort(std::begin(listOfKlasa), std::end(listOfKlasa), 
          [](const Klasa& left, const Klasa& right) { return left.getNumber() < right.getNumber(); });
bl4ster
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Lublin
  • Postów: 197
0

Dzięki, bardzo eleganckie rozwiązanie!

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.