C++ std::vector sortieren

T

thuering

Gast
Moin!
Ich habe in einem kleinen Spiel einen std::vector gefüllt mit Objekten. In den Objekten gibt es eine Membervariable
C++:
float distance
Ich möchte den Vektor umsortieren, so dass das Objekt mit der kleinsten float distance am Anfang des Vectors steht.
Wie mache ich das am elegantesten?
 
Lösung
L
Du könntest std::sort in Verbindung mit einer Lambda-Funktion verwenden:
std::sort(vec.begin(), vec.end(), [](const MeinObjekt& a, const MeinObjekt& b) { return a.distance < b.distance; });
wobei vec dein std::vector ist und MeinObjekt die Klasse mit dem Member distance ist.
Du könntest std::sort in Verbindung mit einer Lambda-Funktion verwenden:
std::sort(vec.begin(), vec.end(), [](const MeinObjekt& a, const MeinObjekt& b) { return a.distance < b.distance; });
wobei vec dein std::vector ist und MeinObjekt die Klasse mit dem Member distance ist.
 
  • Gefällt mir
Reaktionen: Schwachkopp, thuering, tollertyp und eine weitere Person
Alternativ sollte das auch mit ranges gehen:
C++:
#include <algorithm>
#include <functional>
[...]
std::ranges::sort(vec, std::less{}, &MeinObjekt::distance);

Das MeinObjekt ist wieder die Klasse mit dem member distance. Ich habe das Wording mal beibehalten, auch wenn das eine recht unglückliche Wortwahl ist.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Schwachkopp
Zurück
Oben