lambda表达式递归报错

发布时间 2023-09-26 11:19:52作者: value0

lambda表达式递归报错

报错代码:

void solve()
{
    int n = 10;
    vector<int> adj[n + 1];
    auto dfs = [&](auto self, int u, int p) -> void
    {
        for (auto v : adj[u])
        {
        }
    };
}

在递归lambda表达式中引用的外部变量尽量不要出现形如

vector<int> adj[n + 1]

我们修改成

vector<vector<int>> adj(n + 1)

就可正常运行了。

同时,注意递归lambda表达式一定要标注出返回的数据类型,不然也会报错

报错代码:

auto dfs = [&](auto self, int u, int p)
{
};