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)
我怎么能?
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)
| 归档时间: |
|
| 查看次数: |
90 次 |
| 最近记录: |