Frage zum sort- Algorithmus
-
Hallo.
Ich hätte eine Frage zu folgendem Code:
#include <iostream> #include <vector> #include <algorithm> #include <ctime> #include <conio.h> using namespace std; typedef std::pair<int,int> MyPairInt; int main() { int i; vector <MyPairInt> data; srand(time(0)); for (i=0;i<10;i++) data.push_back(MyPairInt(rand()%100,i)); std::sort(data.begin(),data.end()); _getch(); return 0; }Das Problem wäre, dass nun in data die kleineren Zahlen zuerst und die 'Großen' am Ende stehen. Wie bekomme ich es aber hin, dass es genau andersherum ist?
Danke.
H.W.
-
sort(data.begin(),data.end());
ist gleich
sort(data.begin(),data.end(),less<MyPairInt>());
du brauchst
sort(data.begin(),data.end(),greater<MyPairInt>());
-
Oder du gibst den umgekehrten Eingabebereich an:
sort(data.rbegin(),data.rend());(rbegin() und rend() sind reverse-Iteratoren und laufen rückwärts über deinen Vektor)