【发布时间】:2018-04-18 07:48:40
【问题描述】:
这一切都在一个类中。 B 类持有一个列表。
class A{
bool compare = [](const B& lhs, const B& rhs){
return lhs.list.size() >= rhs.list.size();
};
priority_queue<B, vector<B>, decltype(compare)> pq(compare);
};
我在 pq 上遇到任何错误。我对 lambda 函数非常不熟悉,所以我不知道如何解决这个函数。
错误:比较不是类型
【问题讨论】:
-
题外话:为什么不只是一个常规的、普通的、静态的成员函数?这里没有需要使用 lambda。
-
@StoryTeller 这个比较函数将有多个返回值。因此,我将使用 switch 语句访问 A 类中的成员,该成员将决定比较将返回什么返回值。编辑:除非您知道比较器有多个返回的方法。
-
这个 lambda(假设它是“固定的”)也不会帮助你做到这一点......
-
@Plays4u 然后你需要访问函数内部的
A实例,所以你需要一个成员函数和/或一个捕获lambda。 -
在我看来,如果你需要替换它所代表的函数,在这里使用 lambda 是有意义的。 @StoryTeller:“固定”的 lambda 是没用的,不是吗? lamdbas 可以在一个方面的实现之间进行更改。
标签: c++ c++11 lambda priority-queue