//: C07:SimpleGenerators.h // From "Thinking in C++, Volume 2", by Bruce Eckel & Chuck Allison. // (c) 1995-2004 MindView, Inc. All Rights Reserved. // See source code use permissions stated in the file 'License.txt', // distributed with the code package available at www.MindView.net. // 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++); } }; namespace std { // A generic global operator<< for printing any STL pair<>: template ostream& operator<<(ostream& os, const pair& p) { return os << p.first << "\t" << p.second << endl; } } ///:~