我正在使用:Windows 10,C ++,Visual Studio 2013。
我正在寻找一种方法来访问带有负数的2D数组,例如我知道这适用于1D数组:
int myarray[35];
#define a (myarray + 50)
a[-45] = 0; //accesses myarray[5]
但无法弄清楚如何使其与2D数组一起使用:
int foo[32][32]
#define bar (foo + 50)(foo + 50)
// The above does not work
答案 0 :(得分:1)
您可以对2D数组使用相同的方法,因为define
可能有参数:
int a[100][100];
#define b(x,y) a[x + 50][y + 50]
a[0][0] = 123;
cout << b(-50, -50) << endl; // prints 123
我个人不喜欢使用这个define
驱动的方法,因为这限制了您可以对数组执行的操作(例如,您不能将b(1)
写成一个特定的行{{ 1}}或者必须为它定义另一个宏。)
为了提高可读性和可维护性,请考虑根据a[51]
编写自己的类:
std::vector