【发布时间】:2021-02-06 07:45:01
【问题描述】:
我正在尝试使用 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(); }
最后排序根本不按顺序。属性中也有负值。有什么建议吗?
【问题讨论】:
-
有哪些错误?我认为你应该使用
return lhs.getim() < rhs.getim();而不是你写的。 -
您没有调用该函数。
return lhs.getut() < rhs.getut()但这意味着您需要将getut()设为常量。像这样:double event::getut() const { return unift; } -
@TanveerBadar 会要求提供参数,我应该输入什么作为参数,因为 lhs.getim(lhs) 不起作用。
-
@RetiredNinja 错误:将 'const event' 作为 'this' 参数传递会丢弃限定符 [-fpermissive] AND --------- -------------------------------------------------- ---------------- 注意:在调用 'double event::getut()' double event::getut() ^~~~~
-
你没有阅读我写的所有内容。 “这意味着你需要将 getut() 设为 const。像这样:
double event::getut() const { return unift; }”
标签: c++ sorting c++11 vector lambda