Objekte nach Attributen sortieren (C++11)

Wer in C++ eigene Objekte definiert, möchte diese oft auch in Listen speichern und nach den jeweiligen Eigenschaften sortieren. Wir sehen uns in diesem Beitrag an, wie dies bewerkstelligt werden kann.

Im ersten Schritt binden wir die benötigten Module ein.

Anschließend definieren wir die Struktur Mountain. Diese beinhaltet mehrere typische Eigenschaften von Bergen wie zum Beispiel die Höhe oder die geographische Position. Mit Hilfe des Konstruktors können beim Anlegen eines Mountain Objektes alle definierten Eigenschaften übergeben werden. Um die Objekte mit std::sort sortieren zu können implementieren wir zusätzlich für alle Attribute eine statische Funktion, die die jeweilige Eigenschaft des Objektes mit der gleichen Eigenschaft eines zweiten Objektes vergleichen kann. 

In unserer main() Funktion können wir nun mehrere Berge instanziieren und in einem vector anordnen. Anschließend verwenden wir std::sort um den vector nach den Attributen Name, geographische Breite und Höhe zu sortieren. In jedem Fall verwenden wir die entsprechende Sortierfunktion, die wir in der Struktur Mountain definiert haben. Im Fall der dritten Sortierung verwenden wir eine Sortierung in Absteigender Reihenfolge. Dies wird mit Hilfe der Parametern rbegin() und rend() erreich.

Im Programm werden mehrere C++ 11 spezifische Methoden verwendet. Aus diesem Grund geben wir bei der Kompilierung das std Flag an:

$ g++ -std=c++11 sort.cpp -o sort

$ ./sort

Nach der Ausführung erhalten wir folgende Ausgabe:

Das komplette Beispiel herunterladen: sort.zip

 

Über Anton Neururer 31 Artikel
Ich bin Programmierer und Blogger. Themen die mich besonders interessieren sind Python, C++ und Javascript. Des Weiteren befasse ich mich mit Fraktalen.

Hinterlasse jetzt einen Kommentar

Kommentar hinterlassen