解释 C++ 中的 pair 函数

Explain pair function in C++

我遇到了这段代码

#define pii pair<int, int>
#define pip pair<int, pii>

...

vector< pip > graph;
graph[i] = pip( c, pii(u,v));

当我尝试时

graph[i] = pair<c,pair<u,v>>;

我收到一条错误消息

error: 'c' cannot appear in a constant-expression 
error: 'i' cannot appear in a constant-expression
error: 'j' cannot appear in a constant-expression

为什么这两个表达式不相等?

pair 类型 ,不是函数。

除了语法不正确之外,您收到此错误的原因是您试图将 c(一个 运行 时间变量)传递到模板参数中,此处:

graph[i] = pair<c,pair<u,v>>;

大概你想要这样的东西:

graph[i] = pip(c, pii(u,v));

相当于:

graph[i] = pair<int, pair<int, int>>(c, pair<int, int>(u,v));