[C++] Sortowanie tablicy wg drugiej kolumny

Mam dwuwymiarowa tablice ktora chcialbym posortowac wg drugiej kolumny.

Nigdy jeszcze nie sortowalem w c++.

Talibca sklada sie z dwoch kolumn - ID i wartosci.

Wyglada mniej wiecej tak

1 21

2 6

3 54

4 65

5 11

… …

po sortowaniu chcialbym otrzymac cos takiego

4 65

3 54

1 21

5 11

2 6

Probowalem referencji sorta podanej na cplusplus.com ale jakos nie moge tego przerobic aby dzialalo na dwuwymiarowej tablicy.

Jeśli chcesz skorzystać z algorytmu sort z biblioteki algorithm to musisz zdefiniować swoją własną funkcję porównującą. Proponuję taki algorytm:

#include 

#include 

#include 

#include 


using namespace std;


struct PAIR

{

 int ID;

 int value;

};


bool sortf (PAIR i, PAIR j)

{

 return (i.value > j.value );    

}


int main(int argc, char *argv[])

{

    vector tab;

    PAIR p;


    p.ID = 1;

    p.value = 21;

    tab.push_back(p);


    p.ID = 2;

    p.value = 6;

    tab.push_back(p);


    p.ID = 3;

    p.value = 54;

    tab.push_back(p);


    p.ID = 4;

    p.value = 65;

    tab.push_back(p);


    p.ID = 5;

    p.value = 11;

    tab.push_back(p);


    sort(tab.begin(), tab.end(), sortf);


    vector ::iterator it = tab.begin();


    for( ; it != tab.end(); it++)

         cout<<(*it).ID <<" "<<(*it).value <

    return 0;

}

Nie wiem jedynie jak chcesz wprowadzać dane do tablicy, dlatego ja zrobiłem to “na sztywno”.

Dzieki :slight_smile: