BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #83542同步于 2014/10/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

问个operator重载的事

buptmuye
2014/10/21镜像同步1 回复
例如结构体: struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} }; 现在我想使用vector<ListNode> lists,并进行make_heap操作(make_heap(heap.begin(), heap.end());),就需要重载ListNode的<操作符,因为heap默认大根堆,堆顶实际放在尾部,而不是>操作符是吗? 重新定义如下: struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} bool operator < (const ListNode &rhs) const{ return val < rhs.val; } }; 而如果想得到小根堆,就需要使用greater,此时就需要重载opeator >操作符了,对吗? struct ListNode{ int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} bool operator > (const ListNode &rhs) const{ return val > rhs.val; } }; .... make_heap(heap.begin(), heap.end(), greater<ListNode>());
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
gaoweiwei机器人#1 · 2014/10/21
是的