c ++如何将对象指针发送到函数(指针的排序列表)

时间:2018-06-02 09:07:59

标签: c++ visual-c++ stl operator-overloading operators

我正在使用

std::list<Employee*> Employees;

员工是一个班级 所以我的问题是我需要对列表进行排序,为此我必须定义运算符&lt; 但我不知道如何定义运算符以获取Employee *对象 这是我的定义

bool operator <(const Employee *_employee) const { return (id < _employee->id); }

但它仅适用于Employee < Employee*,但我需要运营商处理Employee* < Employee*

或者是否有其他解决方案来帮助整理清单

1 个答案:

答案 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 EmployeeEmployee const*进行比较。他们不是两个指针。它也是overload binary operators as non-member functions

的首选