sort函数有缺陷?请提供个对vector排序的方法

发布于 2022-08-20 00:01:31 字数 391 浏览 8 评论 4

假设一个类
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

隔纱相望 2022-08-29 14:56:44

用 >=  在逻辑上说不过去,如果a和b两者相等,就会出现“a既不小于b,且b又不小于a,且a和b又不等”
排序用的那个函数,是用于判别 一个数是否应当排在另一个数之前

梦境 2022-08-26 22:46:43

楼上两位说得对

另外,我还觉得,还应该把那个等号去掉,即 l.amt >= r.amt 变为 l.amt > r.amt

与之呼应 2022-08-26 06:31:59

编译应该能过,不过会有临时对象生成警告吧
bool sort_m(const MY& l, const MY& r)...

彩扇题诗 2022-08-24 00:58:44

bool sort_m(MY &l,MY &r){
  return l.amt >= r.amt;
}

这个能编译通过吗?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文