【发布时间】:2011-10-10 05:38:34
【问题描述】:
我有 2 个代表迷宫的二维数组
const char maze1[10][11]
和
const char maze2[20][21]
我正在尝试创建 1 个函数来处理两个迷宫,如下所示:
void solveMaze(maze[][])
{
}
然后像solveMaze(maze1);一样通过迷宫
我将如何使用函数模板来做到这一点?
我最近已经问过这个问题,但明确要求不要使用函数模板,因为我不确定如何使用它,但我想看看它是如何工作的。 (希望这不是“滥用”系统)
【问题讨论】:
-
我认为这不能通过模板来完成。如果你想要一个 char 迷宫、int 迷宫或 float 迷宫,你会使用模板,但不仅仅是不同尺寸的 char 迷宫。
-
@ChadSchouggins:实际上,数组维度可以是模板参数。典型示例是获取数组大小的模板函数:
template <typename T, size_t N> size_t size(T (&)[N]) { return N; }。虽然语法很晦涩。 -
@codeCube:这很有意义,因为模板参数是常量,这可以允许编译器针对某些大小执行特定的优化。这里值得怀疑,但有一天可能会有所帮助。
-
@codeCube:您并不完全正确。我可以想到几种情况,您希望使用整数常量作为模板参数。例如,一个模板化的、任意大小的位域类。
标签: c++ arrays templates function