set-rebgin

//////////////////////////////////////// // 2018/04/29 8:19:52 // set-rebgin // returns reverse iterator to the end of the set #include <iostream> #include <set> #include <iomanip> #include <string> using namespace std; template<class T> class Member { private: T first, last; public: Member(T f, T l) :first(f), last(l){} void print() const{ cout.setf(ios::left); cout << setw(15) << first << " " << last << endl; } friend bool operator < (const Member& m1, const Member& m2){ return m1.last < m2.last; } }; //====================== int main(){ typedef Member<string> M; typedef set<M, less<M>> S; M m("Frost","Robert"); S s; s.insert(m); s.insert(M("Smith","John")); s.insert(M("Amstrong", "Bill")); s.insert(M("Bain","Linda")); S::iterator it = s.begin(); while (it != s.end()){ (it++)->print(); } cout << endl; S::reverse_iterator rl = s.rbegin(); while (rl != s.rend()){ (rl++)->print(); } cout << endl; return 0; } /* OUTPUT: Amstrong Bill Smith John Bain Linda Frost Robert Frost Robert Bain Linda Smith John Amstrong Bill */