我遇到了这段代码
#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
为什么这两个表达式不相等?
答案 0 :(得分:4)
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));