我有以下课程
class Person
{
string name;
string section;
};
比较器运算符的实现可以将其存储在映射中吗?
答案 0 :(得分:3)
一种可能的实现方式是:
class Person
{
string name;
string section;
};
bool operator<(const Person& lhs, const Person& rhs) {
return lhs.name < rhs.name;
}
这将按字典顺序按名称排序。其他订单可能会有所不同,具体取决于您的需求。你的问题有点不清楚,因为通常你需要两种类型的地图,一个键类型和一个值类型。仅对键类型进行比较,而不是对值类型进行比较。
答案 1 :(得分: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
首先和section
秒执行词典编辑而非比较。显然,这假设您有兴趣使用Person
s作为地图的键。