【发布时间】:2017-03-26 09:01:21
【问题描述】:
我试图创建一些带有负索引的向量,但刚刚得知它在 C++ 中是不允许的。是否有任何替代或更好的方法来做到这一点?
例如我想创建一个名为 Wt 的 3D 矢量:
在 VBA 上下文数组中是这样构建的:简单而漂亮
Redim Wt(0 to k_max,-i_max to i_max,-j_max to j_max)
' and use it like below for example:
Wt(3, -100, -105) = .....
在 C++ 上下文中,它既不友好又不方便:
// resizing the vector:
Wt.resize(k_max + 1);
for (int k = 0; k < k_max + 1; k++) {
Wt[k].resize(2 * i_max + 1);
for (int i = 0; i < 2 * i_max + 1; i++) {
Wt[k][i].resize(2 * j_max + 1);
}
}
// when using the vector:
for (int k = 0; k <= k_max; k++) {
for (int i = -i_max; i <= i_max; i++) {
for (int j = -j_max; j <= j_max; j++) {
Wt[k][i + i_max][j + j_max] = ...
}
}
}
【问题讨论】:
-
负索引是什么意思?
-
一般你写一个类,把不友好和不方便的功能封装起来,给你想要的接口。
-
@Alex:我的意思是矢量,例如Wt[-1][-5][-100] = 1.235 ,其中索引 -1, -5, -100 都是负数...
-
@TsuiJohn 我正好问你是否有矩阵,负索引是什么意思?它指向什么?
标签: c++ arrays visual-c++ vector