C++ 对象的比较器运算符,用于将其存储在映射中

C++ 对象的比较器运算符,用于将其存储在映射中,c++,stl,comparator,stdmap,C++,Stl,Comparator,Stdmap,我有以下课程 class Person { string name; string section; }; 比较器运算符的实现可以是什么来将其存储在映射中?一种可能的实现是: class Person { string name; string section; }; bool operator<(const Person& lhs, const Person& rhs) { return lhs.name < rhs.name; } 班

我有以下课程

class Person
{
  string name;
  string section;
};

比较器运算符的实现可以是什么来将其存储在映射中?

一种可能的实现是:

class Person
{
  string name;
  string section;
};

bool operator<(const Person& lhs, const Person& rhs) {
    return lhs.name < rhs.name;
}
班级人员
{
字符串名;
弦段;
};

布尔运算符可能类似于

#include <tuple> // for std::tie

struct ComparePersons
{
  bool operator()(const Person& lhs, const Person& rhs) const
  {
    return std::tie(lhs.name, lhs,section) < std::tie(rhs.name, rhs.section);
  }
};
#包括//用于std::tie
结构比较器
{
布尔运算符()(常数人和左侧、常数人和右侧)常数
{
返回std::tie(左S.name,左S,section)

使用
名称
第一个和
部分
第二个,执行字典式的小于比较。显然,这假设您对使用
Person
s作为地图的键感兴趣。

您想如何订购它们?