#include #include #include // pair #include #include // copy, sort, itd. #include using namespace std; typedef pair PARA; typedef vector VECT; typedef VECT::iterator VECTIT; template class niepelnoletni { int wiek; public: niepelnoletni(int wiek) : wiek(wiek) { } bool operator()(const P& p) const { return p.second < wiek; } }; template ostream& operator<<(ostream& str, const pair& p) { return str << "[" << p.first << "," << p.second << "]"; } template istream& operator>>(istream& str, pair& p) { return str >> p.first >> p.second; } template bool komp(const P& p1, const P& p2) { return p1.second < p2.second; } int main() { ifstream plik("pary.dat"); PARA p; VECT vec; VECTIT it, fin; while (plik >> p) vec.push_back(p); cout << "Po wczytaniu:\n"; fin=vec.end(); for (it = vec.begin(); it != fin; ++it) cout << *it << " "; cout << "\nNajstarsza " << *max_element(vec.begin(),vec.end(),komp) << ", najmlodsza " << *min_element(vec.begin(),vec.end(),komp); it = remove_if(vec.begin(),fin, niepelnoletni(18)); vec.erase(it,vec.end()); cout << "\nPo usunieciu niepelnoletnich:\n"; fin=vec.end(); for (it = vec.begin(); it != fin; ++it) cout << *it << " "; sort(vec.begin(),fin,komp); cout << "\nPo uporzadkowaniu:\n"; fin=vec.end(); for (it = vec.begin(); it != fin; ++it) cout << *it << " "; cout << endl; }