返回信息流例如结构体:
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>());
这是一条镜像帖。来源:北邮人论坛 / cpp / #83542同步于 2014/10/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
问个operator重载的事
buptmuye
2014/10/21镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复