////////////////////////////////////////// 2018/04/29 8:43:34// set-rend// returns a reverse iterator to the begining of the set#include <iostream>#include <set>#include <iomanip>#include <string>usingnamespacestd;
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;
}
friendbooloperator <(const Member& m1, const Member& m2){
return m1.last < m2.last;
}
};
//=================================int main(){
typedef Member<string> M;
typedefset<M, less<M>> S;
S s;
M m("Frost","Robert");
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;
return0;
}
/*
OUTPUT:
Amstrong Bill
Smith John
Bain Linda
Frost Robert
Frost Robert
Bain Linda
Smith John
Amstrong Bill
*/