我试图像这样在类内声明一个lambda比较函数:
class Solve {
private:
int n, q, first[N+1], depth[N+1], seg[_log(N)+2][(N<<1)+1];
vector <int> G[N+1], euler;
auto cmp = [euler, depth] (const int &a, const int &b) -> bool {
return depth[euler[a]] < depth[euler[b]];
};
...
但收到错误:error: non-static data member declared with placeholder 'auto'
将函数声明为静态无助:error: capture of non-variable 'Solve::euler'
+其他错误。显式使用std :: function <>也无法解决。
该功能拟在min(a, b, cmp);
中使用
非常感谢您的帮助!
您无法在类定义中创建lambda函数。将其移至构造函数(auto
由编译确定,在此处不起作用):