首页 > 解决方案 > 用 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(); }

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

标签: c++sortingc++11vectorlambda

解决方案


您正在按 的地址对事件进行排序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(); });

推荐阅读