//: C05:NoCompose.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2000 // Copyright notice in Copyright.txt // Writing out the function objects explicitly #include "copy_if.h" #include #include #include #include #include #include #include using namespace std; class Rgen { const int max; public: Rgen(int mx = 100) : max(RAND_MAX/mx) { srand(time(0)); } int operator()() { return rand() / max; } }; class BoundTest { int top, bottom; public: BoundTest(int b, int t) : bottom(b), top(t) {} bool operator()(int arg) { return (arg >= bottom) && (arg <= top); } }; int main() { vector v(100); generate(v.begin(), v.end(), Rgen()); vector r; copy_if(v.begin(), v.end(), back_inserter(r), BoundTest(30, 40)); sort(r.begin(), r.end()); copy(r.begin(), r.end(), ostream_iterator(cout, " ")); cout << endl; } ///:~