2016-12-26 16 views
1

Ich mache ein 2D-Spiel, um meine Klassenführung zu trainieren.Multidimensionales Array durch ein anderes ersetzen?

Ich habe zwei mehrdimensionale Arrays: Map1 und Map. Ich möchte Map Werte mit Map1 Einsen ersetzen. Wie kann ich dies tun, ohne jedes Element manuell wie Map[0][0] = '#' usw. ersetzt

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

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

Antwort

0

Ich persönlich würde nicht Code wie diesen schreiben, aber zum Testen ...

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; 
} 
0

einfach nutzen die integrierten Kopier Zuordnung für Klassen:

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

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

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

int main() 
{ 
    Map = Map1; 
} 
1

Da mehrdimensionale Arrays zusammenhängenden Layout im Speicher sein, garantiert, und die beiden Arrays die gleiche Größe, Sie können dies tun:

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

Beachten Sie, dass die Besetzung notwendig ist, die gesamte Kopie als Array von Zeichen zu machen.

Auf der anderen Seite würde diese Aufgabe einfacher gewesen, wenn Sie std::vector<std::string> verwendet, direkt zuordnen kann: Map = Map1 ... Statt

0

sie zu kopieren, ist es vielleicht erfolgreicher seinen Inhalt auszutauschen, diese kann mit std::swap

swap(Map,Map1); 
getan werden
Verwandte Themen