模板大小多维数组C++

Ext*_*aze 0 c++ arrays templates

我想使用模板来指定函数中的大小.让我给你举个例子.我可以做这个:

int sub (int a[2][2]) {

}
int main () {
   int a[2][2];
   sub(a);
}
Run Code Online (Sandbox Code Playgroud)

我可以做这个:

template<int size2>
int sub (int a[][size2]) {

}
int main () {
   int a[2][2];
   sub(a);
}
Run Code Online (Sandbox Code Playgroud)

但我想要的是:

template<int size1, int size2>
int sub (int a[size1][size2]) {

}
int main () {
   int a[2][2];
   sub(a);
}
Run Code Online (Sandbox Code Playgroud)

我怎么能?

Bri*_*ian 7

std::array如果您有C++ 11支持,或者std::vector如果没有,则可能使用更好的选项.如果您确实想使用C样式数组,可以使用以下语法通过引用传递它们.

template<size_t size1, size_t size2>
int sub (int (&a)[size1][size2]) {
    // ...
}
int main() {
    int a[2][2];
    sub(a);
}
Run Code Online (Sandbox Code Playgroud)