用另一个替换多维数组?
问题描述:
我正在制作2D游戏来训练我的班级管理。用另一个替换多维数组?
我有两个多维数组:Map1
和Map
。我想用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);