如果没记错很久以前就遇到过这个问题了,当时也纠结了一会,没想到今天又遇到了。聊记于此。
类定义:
class DataSortKey
{
public:
DataSortKey(){ memset(this, 0, sizeof(*this)); }
unsigned level;
unsigned vip_level;
unsigned param1;
uint64_t param2;
unsigned param3;
};
bool operator<(const DataSortKey& lhs, const DataSortKey& rhs);
operator<的正确实现方式:
bool operator<(const DataSortKey& lhs, const DataSortKey& rhs)
{
// 20190921修正
return (lhs.level < rhs.level) ||
(lhs.level == rhs.level && lhs.vip_level < rhs.vip_level) ||
(lhs.level == rhs.level && lhs.vip_level == rhs.vip_level && lhs.param1 < rhs.param1) ||
(lhs.level == rhs.level && lhs.vip_level == rhs.vip_level && lhs.param1 == rhs.param1 && lhs.param2 < rhs.pa