c++ - 有没有一种方法可以更有效地选择特定变量?

标签 c++

所以我正在编写一个程序,其中有 9 个不同的迷宫,存储在二维数组中,所有迷宫都填充了硬编码值。当玩家选择迷宫时,我想将所选迷宫中的硬编码值复制到事件迷宫的二维数组中。当我写出来时,我以最直接的方式完成了它,如下所示。然后我想更好地迷宫它,因为它看起来……臃肿。 switch case 不会减少行数,因此我想采取某种方法立即将 int mazeSelection 变量放入所选迷宫的变量名中。但似乎您无法在运行时更改变量名称,也无法使用字符串变量来表示另一个变量的名称。例如 string mazenumber = "maze"+ tostring(mazeSelection); 然后执行 mazenumber[11][11] 不起作用,但这就是我的基本思想想做。

所以结果是,有没有办法让这段代码更高效?

    if(mazeSelection == 1)
        maze[11][11] = maze1[11][11];
    if(mazeSelection == 2)
        maze[11][11] = maze2[11][11];
    if(mazeSelection == 3)
        maze[11][11] = maze3[11][11];
    if(mazeSelection == 4)
        maze[11][11] = maze4[11][11];
    if(mazeSelection == 5)
        maze[11][11] = maze5[11][11];
    if(mazeSelection == 6)
        maze[11][11] = maze6[11][11];
    if(mazeSelection == 7)
        maze[11][11] = maze7[11][11];
    if(mazeSelection == 8)
        maze[11][11] = maze8[11][11];
    if(mazeSelection == 9)
        maze[11][11] = maze9[11][11];

最佳答案

所以你的问题缺乏细节,但让我们假设你有这个

int maze[11][11], maze1[11][11]; // etc

那么首先要说的是

maze[11][11] = maze1[11][11];

不会复制你的迷宫。这是一个非常常见的初学者误解,您可以通过这种方式引用整个数组,但是 maze1[11][11]仅指迷宫中坐标 (11,11) 处的一个元素,而不是整个迷宫。更糟糕的是,由于数组的大小是 11 x 11,该元素实际上并不存在,因此代码只是一个错误。 (令人惊讶的是)没有简单的方法在 C++ 中复制数组。

最简单的建议(感谢@molbdnilo)是将你的迷宫放在一个结构中。

struct Maze
{
    int tiles[11][11];
};

Maze maze, maze1; // etc

现在可以用通常的方式复制结构,所以

maze = maze1;

是合法的代码并且确实复制了迷宫。

然后你可以更进一步,制作一个迷宫数组,并编写这个简单的代码

Maze selected_maze, all_mazes[10];

selected_maze = all_mazes[mazeSelection];

关于c++ - 有没有一种方法可以更有效地选择特定变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64022609/

相关文章:

c++ - 如何设置冲突 header 的优先级c++

C++ 将大型数组中的最新值存储在单独的数组中

c++ - 解析字节数组中的 Unicode

c++ - std::greater<> 如何在集合中工作?

java - 在 Windows 7 上为 JNI_CreateJavaVM 链接到什么库?

c++ - 深奥的 C++ 运算符

c++ - 如何在Windows下使用cmake在qt GUI应用程序中显示控制台

c++ - 基于std::array的多维数组初始化

c++ - 查找类复制构造的问题

c++ - 嵌套并行区域 OpenMP