C++:处理不同大小数组的函数

duk*_*vin 1 c++ arrays function

我有2个代表迷宫的2D阵列

const char maze1[10][11]const char maze2[20][21]

我正在尝试创建1个函数来处理这两个迷宫:

void solveMaze(maze[][])
{
}
Run Code Online (Sandbox Code Playgroud)

并且只是传递迷宫solveMaze(maze1);
然而,我必须为数组提供一个大小,这取决于传入的迷宫.不重载函数或使用函数模板,我怎么能有1个函数来处理两个数组?

Rei*_*ica 7

C++答案

用途std::vector:

// Initialize the vector with 11 rows of 10 characters
std::vector<std::vector<char> > maze(11, std::vector<char>(10));

void solveMaze(const std::vector<std::vector<char> > &maze) {
    // note that you can access an element as maze[x][y]
}
Run Code Online (Sandbox Code Playgroud)

boost::multi_array会更有效(如果你允许使用升压).我认为它是这样的:

boost::multi_array<char, 2> maze(boost::extents[10][11]);

void solveMaze(const boost::multi_array<char, 2> &maze) {
    // note that you can access an element as maze[x][y]
}
Run Code Online (Sandbox Code Playgroud)

C回答

使用指针:

const char maze1[10][11];

void solveMaze(char *maze, size_t x_length, size_t y_length) {
    // note that you can access an element as maze[x + (x_length * y)]
}
Run Code Online (Sandbox Code Playgroud)