ďťż

Ł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
  •