相关疑难解决方法(0)

可以表达lambda表达式的"类型"吗?

将lambda表达式视为可调用对象的"语法糖",可以表达未命名的基础类型吗?

一个例子:

struct gt {
    bool operator() (int l, int r) {
        return l > r;
    }
} ;
Run Code Online (Sandbox Code Playgroud)

现在,[](int l, int r) { return l > r; }是上述代码的优雅替代(加上gt的可调用对象的必要创建),但有没有办法表达gt(类型)本身?

一个简单的用法:

std::set<int, gt> s1;  // A reversed-order std::set
// Is there a way to do the same using a lambda?
std::set<int, some-magic-here-maybe([](int l, int r) { return l > r; }) > s2;
Run Code Online (Sandbox Code Playgroud)

c++ lambda stl c++11

52
推荐指数
1
解决办法
2万
查看次数

带有lambda比较器错误的C++ priority_queue

我有以下错误的代码,我试图在VC2010中编译,但我得到错误C2974这只发生在我包含lambda表达式时,所以我猜它与此有关.

typedef pair<pair<int, int>, int> adjlist_edge;
priority_queue< adjlist_edge , vector<adjlist_edge>,
    [](adjlist_edge a, adjlist_edge b) -> bool {
        if(a.second > b.second){ return true; } else { return false; }
    }> adjlist_pq;
Run Code Online (Sandbox Code Playgroud)

我知道模板定义的形式是正确的

priority_queue<int , vector<int>, greater<int>> pq;
Run Code Online (Sandbox Code Playgroud)

按预期工作.我有什么想法我做错了吗?看起来不对的lambda有什么明显的错误我可能会忽略吗?谢谢阅读!

c++ lambda stl priority-queue c++11

41
推荐指数
4
解决办法
3万
查看次数

标签 统计

c++ ×2

c++11 ×2

lambda ×2

stl ×2

priority-queue ×1