【发布时间】:2019-11-20 15:16:22
【问题描述】:
我对 C++ 还很陌生,所以我很难理解一些复杂的术语,例如宏和预处理器。下面附上我看不懂的代码:
#define NP 2
#define MAX 2000
typedef pair<int, double> edge;
vector<edge> vec[NP][MAX];
这里我不能理解的是,vector真正存储了什么,[NP][MAX]决定了什么?
【问题讨论】:
-
我会问你 --
int vec[NP][MAX];是什么意思?如果您知道这意味着什么,那么找出vector<edge> vec[NP][MAX];的问题是什么? -
整个扩展为
vector<pair<int, double>> vec[2][2000]。简单地说,一个二维向量数组。 -
我想提一下,在 C++ 中应该禁止宏。宏标识符不是
namespaces 的主题,这可能会导致意想不到的奇怪效果。在这种情况下,const整数变量也可以。 -
MAX似乎也表明这两个数组组件确实也应该是vector/array,例如vector<vector<vector<edge>>>或vector<array<vector<edge>, NP>>。vector正确处理不同大小的数组,无需通过引入最大大小和手动跟踪实际大小来限制程序。 -
@RokasVišinskas 你在 cmets 中回答