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)


Anmelden zum Antworten