我正在制作2D游戏来训练类(class)管理。

我有两个多维数组:Map1Map。我想用Map替换Map1值。我如何做到这一点而无需手动替换每个元素(如Map[0][0] = '#'等)。

char Map[10][21] = {
    "####################",
    "#                  #",
    "#                  #",
    "#                  #",
    "#                  #",
    "#                  #",
    "#                  #",
    "#                  #",
    "#                  #",
    "####################"};

char Map1[10][21] = {
"####################",
"#                  #",
"#                  #",
"#                  #",
"#                  #",
"#       TEST       #",
"#                  #",
"#                  #",
"#                  #",
"####################"};

最佳答案

由于保证多维数组在内存布局中是连续的,因此和两个数组具有相同的大小,您可以执行以下操作:

std::copy((char*)Map1, (char*)Map1 + sizeof(Map1), (char*)Map);

注意,强制转换对于将整个副本作为char数组是必需的。

另一方面,如果您使用std::vector<std::string>,则可以直接分配此任务:Map = Map1 ...

10-08 14:52