#include #include #include #include #include #include using namespace std; class Ludek { public: string nazwisko; string imie; double wynagrodzenie; Ludek(string naz,string im,double kwota):nazwisko(naz),imie(im),wynagrodzenie(kwota){}; friend ostream & operator<<(ostream &w,Ludek *w1) { w << w1->nazwisko<<" "<imie << " : "<< w1->wynagrodzenie; return w; }; }; struct sortuj_rosnaco:public binary_function { static bool rosnaco; bool operator()(Ludek *pier,Ludek *drug) { string tmp=pier->nazwisko+" "+pier->imie; string tmp2=drug->nazwisko+" "+drug->imie; if(rosnaco) return lexicographical_compare(tmp.begin(),tmp.end(),tmp2.begin(),tmp2.end()); else return !lexicographical_compare(tmp.begin(),tmp.end(),tmp2.begin(),tmp2.end()); }; }; struct mniejsze_wyn:public binary_function// klasa obiektu funkcyjny do znalezienia mniejszego wynagrodzenia { bool operator()(Ludek *pier,double kwota) { return pier->wynagrodzenie//---klasa obiekt funkcyjny do sumowania wynagrodzen { double suma; sumuj():suma(0){}; void operator ()(Ludek *w) { suma+=w->wynagrodzenie; } }; bool sortuj_rosnaco::rosnaco=true; int main(int argc, char* argv[]) { vectorp; p.push_back(new Ludek("jakis drugi", "imie 23",1200)); p.push_back(new Ludek("jakis drugi", "imie 22",800)); p.push_back(new Ludek("jakis drugi", "imie 22",2300)); p.push_back(new Ludek("jakis drugi", "imie 24",3423)); sort(p.begin(),p.end(),sortuj_rosnaco()); //--sortowanie z funktorem binarnym rosnaco cout << "Rosnaco: " << endl; copy(p.begin(), p.end(), ostream_iterator(cout, "\n")); sortuj_rosnaco::rosnaco=false; sort(p.begin(),p.end(),sortuj_rosnaco()); //--sortowanie z funktorem binarnym malejaco cout << "Malejaco: " << endl; copy(p.begin(), p.end(), ostream_iterator(cout, "\n")); vectortemp; remove_copy_if(p.begin(),p.end(),back_inserter(temp),bind2nd(mniejsze_wyn(),1300)); cout << "Z wiekszym wynagrodzeniem od 1300: " << endl; copy(temp.begin(), temp.end(), ostream_iterator(cout, "\n")); sumuj Suma; Suma=for_each(p.begin(),p.end(),Suma); cout <<"Suma wszystkich wynagrodzen:"<