sort函数有缺陷?请提供个对vector排序的方法
假设一个类
class MY{
public:
double amt;
};
一个方法:
bool sort_m(MY &l,MY &r){
return l.amt >= r.amt;
}
然后有一个vector<MY> m;
我调用sort(m.begin(),m.end(),sort_m);
正常情况下没错。但发现当连续出现多个amt相同值时,大概有20个左右,程序会core dump,也不知是我用得不对还是sort真有缺陷。其实我就是想要个能对vector中对象排序的简单函数,能有人提供一个吗?就以本例实现即可。谢谢!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
用 >= 在逻辑上说不过去,如果a和b两者相等,就会出现“a既不小于b,且b又不小于a,且a和b又不等”
排序用的那个函数,是用于判别 一个数是否应当排在另一个数之前
楼上两位说得对
另外,我还觉得,还应该把那个等号去掉,即 l.amt >= r.amt 变为 l.amt > r.amt
编译应该能过,不过会有临时对象生成警告吧
bool sort_m(const MY& l, const MY& r)...
bool sort_m(MY &l,MY &r){
return l.amt >= r.amt;
}
这个能编译通过吗?