Einführung
In diesem Tutorial konzentrieren wir uns auf das Sortieren eines Vektors in C++.
Sortieren ist eine der am häufigsten durchgeführten Operationen in jeder Programmiersprache. Ähnlich verhält es sich in C++, wo es mehrere Algorithmen gibt, mit denen jede Datenstruktur sortiert werden kann.
Bei Vektoren können wir insbesondere Sortieroperationen in beliebiger Reihenfolge (aufsteigend oder absteigend) durchführen.
Passende Infrastruktur bei centron
Zum Ausprobieren braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff gibt es ab 3,12 € im Monat, stundengenau abgerechnet und in Sekunden bereit. Cloud Server mieten →
Sortieren eines Vektors in C++ in aufsteigender Reihenfolge
Ein Vektor in C++ kann leicht in aufsteigender Reihenfolge sortiert werden, indem die sort()-Funktion verwendet wird, die in der Algorithmus-Headerdatei definiert ist.
Die sort()-Funktion sortiert eine gegebene Datenstruktur und gibt nichts zurück. Das Sortieren findet zwischen den zwei übergebenen Iteratoren oder Positionen statt. Der dritte Parameter bestimmt die Reihenfolge, in der die Elemente verglichen werden.
Standardmäßig, wenn der dritte Parameter nicht übergeben wird, betrachtet die Funktion ihn als std::less
Lassen Sie uns nun sehen, wie wir einen Vektor in C++ (aufsteigender Reihenfolge) sortieren können.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
//vector initialisation
vector<int> vec {5, 4, 3, 2, 1};
cout<<"Before sorting vector : ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
std::sort(vec.begin(),vec.end());//Sorting the vector
cout<<"\n\nAfter sorting vector : ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
return 0;
}Output:
Vor dem Sortieren des Vektors: 5 4 3 2 1
Nach dem Sortieren des Vektors: 1 2 3 4 5
Sortieren eines Vektors in C++ in absteigender Reihenfolge
Wie wir bereits früher sagten, bestimmt das dritte Argument für die sort()-Funktion in C++ die Sortierreihenfolge. Daher können wir Funktionen darin definieren, um jeden Vektor in unserer gewünschten Reihenfolge zu sortieren (in diesem Fall absteigend).
1. Verwendung von greater() in sort()
Ähnlich wie die less
Lassen Sie uns sehen, wie wir sie verwenden können, um einen sortierten Vektor in absteigender Reihenfolge zu erhalten.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
//vector initialisation
vector<int> vec { 2,4,6,8,10 };
cout<<"Before sorting vector : ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
std::sort(vec.begin(),vec.end(), greater<int>());//Sorting the vector using greater<int>() function
cout<<"\n\nAfter sorting vector : ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
return 0;
}Output:
Vor dem Sortieren des Vektors: 2 4 6 8 10
Nach dem Sortieren des Vektors: 10 8 6 4 2
2. Verwendung von Lambda-Ausdrücken in sort()
Seit C++11 wurde die Verwendung von Lambda-Ausdrücken in der C++-Programmierung eingeführt. Sie sind nichts anderes als einfache Einzeilenfunktionen, die weder eine Deklaration benötigen noch einen Rückgabetyp angeben müssen.
Daher können wir unseren eigenen definierten Lambda-Ausdruck verwenden, um die Sortierreihenfolge durch die sort()-Funktion zu bestimmen. Dies kann erreicht werden, indem der Einzeilenausdruck als dritter Parameter an die sort()-Funktion übergeben wird. Lassen Sie uns sehen, wie das funktioniert
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
//vector initialisation
vector<int> vec { 11,22,33,44,55 };
cout<<"Before sorting vector : ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
std::sort(vec.begin(),vec.end(), [](int &a, int &b){ return a>b; });
//Sorting the vector using user-defined lambda expression(return type bool)
cout<<"\n\nAfter sorting vector : ";
for(auto i=vec.begin(); i<vec.end(); i++)
{
cout<<" "<<*i;
}
return 0;
}Output:
Vor dem Sortieren des Vektors : 11 22 33 44 55
Nach dem Sortieren des Vektors : 55 44 33 22 11
Hier wird der Ausdruck a>b verwendet, um zwei übergebene Argumente aus dem Vektor zu vergleichen. Wie wir aus der Ausgabe des obigen Codes sehen können, wird der Vektor in der gewünschten absteigenden Reihenfolge sortiert.
Fazit
In diesem Artikel haben wir also gelernt, wie man Vektoren in C++ sowohl in aufsteigender als auch in absteigender Reihenfolge sortiert.
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.