Ĺadny brzuch
Witam,
Mam strukturę danych :
struct strukturka{ int x, h; };
i wektor z tej struktury :
vector<strukturka>wektor;
W wektorze jest n elementów, chciałbym posortować wektor wg. zmiennej x znajdujacej sie w strukturze.
Nie mogę niestety zrobić tak :
wektor.sort(wektor.begin(), wektor.end());
Jak wskazać funkcji sort, ze chcę posortować wektor wg zmiennej x?
Pozdrawiam i z góry dziękuję za odpowiedzi.
Musisz zrobic operator:
bool operator<(const strukturka &x, const strukturka &y) { return strukturka.x<strukturka.h; }
i potem dac:
sort(wektor.begin(),wektor.end());
:)
Musisz zrobic operator:
bool operator<(const strukturka &x, const strukturka &y) { return strukturka.x<strukturka.h; }
i potem dac:
sort(wektor.begin(),wektor.end());
:)
idea chyba dobra ale nie powinno być tak:
bool operator<(const strukturka &x, const strukturka &y) { return x.x<y.x; }
Moim zdaniem lepiej nie robić tego w ten sposób tylko przekazać do sort wskaźnik do funkcji porównującej. Gdy zdefiniujesz operator to innej metody na porównanie już nie będzie. Zatem:
bool compareStrukturka(const strukturka& a, const strukturka& b) { return a.x>b.x; } //... std::sort(wektor.begin(), wektor.end(), compareStrukturka);
Użytkownik reVis edytował ten post 31 maj 2007, 14:42
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Mam strukturę danych :
struct strukturka{ int x, h; };
i wektor z tej struktury :
vector<strukturka>wektor;
W wektorze jest n elementów, chciałbym posortować wektor wg. zmiennej x znajdujacej sie w strukturze.
Nie mogę niestety zrobić tak :
wektor.sort(wektor.begin(), wektor.end());
Jak wskazać funkcji sort, ze chcę posortować wektor wg zmiennej x?
Pozdrawiam i z góry dziękuję za odpowiedzi.
Musisz zrobic operator:
bool operator<(const strukturka &x, const strukturka &y) { return strukturka.x<strukturka.h; }
i potem dac:
sort(wektor.begin(),wektor.end());
:)
Musisz zrobic operator:
bool operator<(const strukturka &x, const strukturka &y) { return strukturka.x<strukturka.h; }
i potem dac:
sort(wektor.begin(),wektor.end());
:)
idea chyba dobra ale nie powinno być tak:
bool operator<(const strukturka &x, const strukturka &y) { return x.x<y.x; }
Moim zdaniem lepiej nie robić tego w ten sposób tylko przekazać do sort wskaźnik do funkcji porównującej. Gdy zdefiniujesz operator to innej metody na porównanie już nie będzie. Zatem:
bool compareStrukturka(const strukturka& a, const strukturka& b) { return a.x>b.x; } //... std::sort(wektor.begin(), wektor.end(), compareStrukturka);
Użytkownik reVis edytował ten post 31 maj 2007, 14:42