Sortieralgorithmus für pair



  • Hi.
    Ich habe folgenden Code:

    typedef std::pair <int,int>	MyPairInt;
    	std::vector <MyPairInt> data;
    
    	// ... 'data' mit Werten gefüllt
    
    	std::sort(data.begin(),data.end());
    

    Dieser Algorithmus sortiert aber leider nur nach dem ersten Wert, also was in 'first' drin steht. Wie kann ich aber nach dem zweiten Wert, also 'second' sortieren?

    Danke.
    V.K.



  • alles swapen dann sortieren;) 😃



  • Der Sort-Algorithmus sortiert immer nach dem, was der operator< der zu sortierenden Elemente bestimmt. Für pair ist das strict-weak-ordering nach dem ersten und zweiten Element des pair. D.h. wenn die beiden firsts gleich sind, wird nach second sortiert.

    Du kannst sort aber ein eigenes Prädikat übergeben, welches nach dem zweiten Element sortiert:

    bool less_second(MyPairInt const& l, MyPairInt const& r)
    {
        return l.second < r.second;
    }
    
    std::sort(x.begin(), x.end(), &::less_second);
    


  • Danke.


Anmelden zum Antworten