用另一个替换多维数组?

问题描述:

我正在制作2D游戏来训练我的班级管理。用另一个替换多维数组?

我有两个多维数组:Map1Map。我想用Map1替换Map值。我怎样才能做到这一点,而无需更换每个元素手动像Map[0][0] = '#'

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

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

我个人不会写这样的代码,但是出于测试...

int main() 
{ 
    for(size_t i= 0; i < 10; ++i) 
     std::cout << Map[ i ] << std::endl; 

    memcpy(Map, Map1, sizeof(Map)); 

    for(size_t i= 0; i < 10; ++i) 
     std::cout << Map[ i ] << std::endl; 
} 

只需利用内置的复制对于类赋值:

struct map { 
    char Map[10][21]; 
}; 

map Map = { 
    "####################", 
    "#     #", 
    "#     #", 
    "#     #", 
    "#     #", 
    "#     #", 
    "#     #", 
    "#     #", 
    "#     #", 
    "####################" 
}; 

map Map1 = { 
    "####################", 
    "#     #", 
    "#     #", 
    "#     #", 
    "#     #", 
    "#  TEST  #", 
    "#     #", 
    "#     #", 
    "#     #", 
    "####################" 
}; 

int main() 
{ 
    Map = Map1; 
} 

由于

多维阵列被保证在存储器布局连续的,和两个阵列具有相同的大小,你可以这样做:

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

注意,投有必要让整个副本作为焦炭的阵列。

在另一方面,这个任务将是,如果你使用std::vector<std::string>更简单,你可以直接分配:Map = Map1 ...

不要照搬他们的,也许是比较成功的,交流的内容,这可以使用std::swap

swap(Map,Map1);