如何减少使用结构体时带来的超长代码 / 如何引用结构体数组里的变量
  • 板块灌水区
  • 楼主smallC233
  • 当前回复6
  • 已保存回复6
  • 发布时间2021/10/10 09:52
  • 上次更新2023/11/4 04:12:45
查看原帖
如何减少使用结构体时带来的超长代码 / 如何引用结构体数组里的变量
296919
smallC233楼主2021/10/10 09:52

问题发源于我打 treap 时想用结构体来记录树上各节点的数据:

struct Node {
	int val, cnt, size, rd, son[2];
} tree[N];

但这样的话代码会变得非常的长,看着很糟糕:

inline void push_up(int p) {
	tree[p].size = tree[tree[p].son[0]].size + tree[tree[p].son[1]].size + tree[p].cnt;
}

对比一下直接定义在外面:

int val[N], cnt[N], size[N], rd[N], son[N][2];
inline void push_up(int p) {
	size[p] = size[son[p][0]] + size[son[p][1]] + cnt[p];
}

但是感觉定义在结构体里看 debug 比较清晰,而且也不想把变量都这么散在外面。 所以想知道有没有什么办法能在用结构体记录的前提下减少代码量qwq。

我有个思路是在函数里用引用:

int &m = maximum;

这样在外部变量命名需要很长的前提下在函数内使用可以比较短,比较方便qwq。

但是不知道引用结构体里的变量,各位大佬知道什么吗qwq

//并不能这么打,不符合语法QAQ
int &v[] = tree[].val;
//用函数或许可以,但是感觉二维数组会变得好丑QAQ
inline int v(int x) {
	return tree[x].val;
}
2021/10/10 09:52
加载中...