-2

我有以下课程

class Person
{
  string name;
  string section;
};

比较器运算符的实现可以将其存储在地图中吗?

4

2 回答 2

3

一种可能的实现是这样的:

class Person
{
  string name;
  string section;
};

bool operator<(const Person& lhs, const Person& rhs) {
    return lhs.name < rhs.name;
}

这将按名称按字典顺序排序。其他订购也是可能的,具体取决于您的需求。您的问题有点不清楚,因为通常您需要两种类型的地图,键类型和值类型。只有键类型需要比较,值类型不需要比较。

于 2013-09-30T19:22:00.260 回答
3

大概是这样的

#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);
  }
};

name使用first 和sectionsecond执行字典顺序的小于比较。显然,这假设您有兴趣使用Persons 作为地图的键。

于 2013-09-30T19:22:09.590 回答