#include #include #include #include using namespace std; class gt{ public: bool operator()(int a, int b){ return(b < a); } }; class average{ private: int count; int sum; // keep initializer list in order declared // do NOT do :sum(0),count(0) public: average():count(0),sum(0){} int ave(){return sum/count;}; void operator()(int x){sum += x; count++;} }; void main(){ average avg, a2; /* avg(3); avg(6); avg(17); cout << avg.ave() << endl; */ vector v; v.push_back(3);v.push_back(6);v.push_back(17); //cout << (for_each(v.begin(),v.end(),avg)).ave() << endl; a2 = for_each(v.begin(),v.end(),avg); cout << a2.ave() << endl; gt great; //greater great; using built in function object sort(v.begin(),v.end(),great); ostream_iterator out(cout, "...\n"); copy(v.begin(), v.end(), out); }