[std::vector, C++] Sortowanie tablicy za pomocą funckji std::sort (STL Algorithms)
witam. zabralem sie za program, ktory bedzie sortowal wektor wg jednej ze zmiennych.
ulozylem go tak, ze mam mozliwosc sortowania za pomoca roznych algorytmow (ten co sam wymyslilem, pewnie najmniej wydajny - wyszlo ze to sie nazywa babelkowe, czyli porownuje element i,i+1 i przesuwam jesli trzeba, i tak kilka przejsc od nowa), dodatkowo dopisze bardziej efektywne algorytmy.
tutaj chcialbym prosic o pomoc, bo chcialem dopisac algorytm
sort z <algorithm>, w dokumentacji c++ znalazlem jak go uzyc, jednak mam problem z okresleniem funkcji comp
void sort ( RandomAccessIterator first, RandomAccessIterator last, Compare comp );
, poniewaz przyklad na stronce jest dla int'ow, gdzie funkcja wyglada dosc prosto
bool myfunction (int i,int j) { return (i<j); }
, dla wektora juz sie tak nie da. oczywiscie najpierw zasiegnalem wiedzy na google, gdzie znalazlem podpowiedz, aby samemu zbudowac funkcje - komparator, ale niestety jeszcze nie potrafie i prosze o podpowiedz, jak czytac ten kod:
template < typename T1, typename T2 >
struct komparator {
T1 T2::* mem_ptr;
komparator( T1 T2::* _mem_ptr )
: mem_ptr( _mem_ptr )
{ }
bool operator ()( const T2 & x, const T2 & y ) const {
return x.* mem_ptr < y.* mem_ptr;
}
};
wiem tyle, ze tworzymy szablon oraz ze? przeciazamy operator()... dodatkowo, ze uzywamy tu czegos z biblioteki boost?(bo szukalem, co to te mem_ptr i polaczylo mnie ze stronka boost, ale nie znam zupelnie tej biblioteki, chociaz na pewno za nia sie wezme niedlugo)
dlatego prosze o podpowiedz, co sie w tym kodzie dzieje oraz podpowiedz, jak go przeksztalcic, aby vektor<struktury*> W1 mozna bylo sortowac wg dowolnej zmiennej struktury;