请帮忙解释初始化语法c++

问题描述

#include "../data-structures/RMQ.h"

struct LCA {
    int T = 0;
    vi time,path,ret;
    RMQ<int> rmq;

    LCA(vector<vi>& C) : time(sz(C)),rmq((dfs(C,-1),ret)) {}
    void dfs(vector<vi>& C,int v,int par) {
        // ...
    }

    // ...
};

在这行 rmq((dfs(C,ret)) 中,我不明白 (dfs(C,ret) 如何形成 RMQ 构造函数的有效输入参数(即 vector<int>)。周围的括号有什么作用?dfs()ret 是如何使用的?

解决方法

这是一段棘手的代码。作者使用可怕的 comma operator 首先调用 dfs(...),然后用 rmq 的值初始化 ret 向量。

简而言之,(dfs(C,-1),ret) 首先调用 dfs,丢弃其结果,然后计算为 ret

如果可以避免,请不要编写这样的代码,这会令人困惑。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...