Karwowski
(Do Rejestracji)
#1
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.
Kojot
(Kojot)
#2
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”.