微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用lambda排序对象向量,而不是最后排序

如何解决用lambda排序对象向量,而不是最后排序

我正在尝试使用lambda编写矢量的排序函数,我已经在很多地方看到了这个建议,但是我在执行此操作时总是遇到问题。

std::sort(eventvec.begin(),eventvec.end(),[](const event& lhs,const event& rhs) {
    return lhs.getim < rhs.getim;});

我在编写它时遇到多个错误,然后由于需要一个静态函数而将其堆叠在一个函数中。

在类中声明的函数是:

double event::getut() { return unift; }

static double getim(event &a) { return a.getut(); }

最后,排序根本没有顺序。属性中也有负值。有什么建议吗?

解决方法

您正在按event::getim的地址对事件进行排序,每个地址都相同。

我认为您的意思是调用事件的成员函数,该事件需要从const event来调用

double event::getut() const { return unift; }

std::sort(eventvec.begin(),eventvec.end(),[](const event& lhs,const event& rhs) {
return lhs.getut() < rhs.getut(); });

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。