我正在使用
std::list<Employee*> Employees;
员工是一个班级 所以我的问题是我需要对列表进行排序,为此我必须定义运算符&lt; 但我不知道如何定义运算符以获取Employee *对象 这是我的定义
bool operator <(const Employee *_employee) const { return (id < _employee->id); }
但它仅适用于Employee < Employee*
,但我需要运营商处理Employee* < Employee*
或者是否有其他解决方案来帮助整理清单
答案 0 :(得分:4)
您不需要提供operator<
和you can't, with both arguments being pointers(它们被视为内置类型,并且已经有内置operator<
语言不会让你改变。
使用second std::list::sort
overload代替自定义比较函数
(具有两个参数的非成员函数):
bool employee_ptr_cmp(Employee const* lhs, Employee const* rhs) { ... }
...
Employees.sort(employee_ptr_cmp);
或就地定义的lambda函数:
Employees.sort([](Employee const* lhs, Employee const* rhs) { ... });
您应该了解上面代码的作用。它允许您按此顺序将const Employee
与Employee const*
进行比较。他们不是两个指针。它也是overload binary operators as non-member functions。