gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 00:52:48 25 4
gpt4 key购买 nike

我正在使用

std::list<Employee*> Employees;

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

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

但它只适用于 Employee < Employee*但我需要接线员处理 Employee* < Employee*

或者如果有其他解决方案可以很好地帮助列表排序

最佳答案

您无需提供 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 .

关于c++如何将对象指针发送到函数(指针列表排序),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50655265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com