Map with comparator(functor)
#include <iostream>
#include <map>
#include <string>
using namespace std;
class Employee {
friend class EmployeeLessThan;
public:
Employee(const string& first, const string& last) : lastName_(last), firstName_(first) {}
string getFirstName( ) const {return(firstName_);}
string getLastName( ) const {return(lastName_);}
private:
string lastName_;
string firstName_;
};
class EmployeeLessThan {
public:
bool operator( )(const Employee& emp1, const Employee& emp2) const {
if (emp1.lastName_ < emp2.lastName_)
return(true);
else if (emp1.lastName_ == emp2.lastName_)
return(emp1.firstName_ < emp2.firstName_);
else
return(false);
}
};
int main( ) {
map<Employee, string, EmployeeLessThan> empMap;
Employee emp1("B", "A"),emp2("J", "G"),emp3("F", "S"),emp4("G", "G");
empMap[emp1] = "tester";
empMap[emp2] = "coder";
empMap[emp3] = "programmer";
empMap[emp4] = "developer";
for (map<Employee, string, EmployeeLessThan>::const_iterator p =
empMap.begin( ); p != empMap.end( ); ++p) {
cout << p->first.getFirstName( ) << " " << p->first.getLastName( ) << " is " << p->second << endl;
}
}
/*
B A is tester
G G is developer
J G is coder
F S is programmer
*/
Related examples in the same category