Map with comparator(functor) : map compare « map multimap « C++ Tutorial






#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








23.3.map compare
23.3.1.Map comparison
23.3.2.Compare two maps
23.3.3.Determine the lexicographical relationship between two maps
23.3.4.Create another map that is the same as the first
23.3.5.Map with comparator(functor)