//: C04:SimpleGenerators.h // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2000 // Copyright notice in Copyright.txt // Generic generators, including // one that creates pairs #include #include // A generator that increments its value: template class IncrGen { T i; public: IncrGen(T ii) : i (ii) {} T operator()() { return i++; } }; // A generator that produces an STL pair<>: template class PairGen { T1 i; T2 j; public: PairGen(T1 ii, T2 jj) : i(ii), j(jj) {} std::pair operator()() { return std::pair(i++, j++); } }; // A generic global operator<< // for printing any STL pair<>: template std::ostream& operator<<(std::ostream& os, const Pair& p) { return os << p.first << "\t" << p.second << std::endl; } ///:~