C++template如何传入高维数组?

学术版

void add(int **a)
by Stay_Hungry @ 2019-10-15 11:45:34


~~用vector~~
by Sophon @ 2019-10-15 11:49:15


放结构体里面。
by ud2_ @ 2019-10-15 12:06:37


@[MZW_BG](/space/show?uid=97504) T function(T \**a)
by 樱花飞舞 @ 2019-10-15 12:30:03


反正不能T function(T a[][]),因为编译器不知道怎么计算a[0][]与a[1][]的地址间距。 其实可以 ```cpp template <typename T, int t> void fuc(T a[][t]) {} ``` 之类的
by saxiy @ 2019-10-15 16:21:32


@[MZW_BG](/space/show?uid=97504) 传静态数组好像其他方法不行 ```cpp template <int t> void fuc(int a[][t]) { } ``` 这个可以。调用也不需要传t的参。
by saxiy @ 2019-10-15 16:40:50


int \*\*a 不能传静态数组,编译器分的很严。 [Error] cannot convert 'int (\*)[12]' to 'int**' for argument '1' to 'void fuc(int**)' 比如全局变量int a[12][12],编译器将 a 理解为指向含有12个元素的数组的指针,就是数组指针,多维数组只有第一维被认成指针,匹配不了int \*\*。
by saxiy @ 2019-10-15 16:48:56


[Error] cannot convert 'int (\*)[12]' to 'int\*\*' for argument '1' to 'void fuc(int\*\*)' markdown搞掉了'\*'号。。。
by saxiy @ 2019-10-15 16:50:59


|