我有以下课程
class Person
{
string name;
string section;
};
比较器运算符的实现可以将其存储在地图中吗?
我有以下课程
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);
}
};
name
使用first 和section
second执行字典顺序的小于比较。显然,这假设您有兴趣使用Person
s 作为地图的键。