Array clonen!?
-
Hallo!
Ich habe ein Array int name1[9][9] und will das clonen. Also will ich am Ende ein zweites Array haben mit dem selben Inhalt.#include ... int main() { } void methode() { int name2[9][9]=name1; }> compiler fehler: .\arraykopie.cpp(59) : error C2106: '=' : left operand must be l-value

wie clone ich also ein array (nicht global!) ?
mfg
house :xmas1:
-
Also entweder kopierst du jedes Element einzeln (einfach) oder versuchst direkt die Speicherbereiche zu kopieren (schwieriger). Für CArray gibt es IMHO auch einen copy-constructor.
-
ja den hätte ich dann gerne
?kann mir jemand ein beispiel schreiben? habe in der library geguckt, aber das habe ich nicht ganz verstanden ...
bzw ich habe es so:using namespace System; using namespace System::Globalization; #include <windows.h> #include <stdio.h> #include <iostream.h> int test[20]; int main() { for(int i=1; int i<21;i++) { test[i]=(4468%i)*4; } array<int>clone=(array<int>)test->Clone(); for(int i=1; int i<21;i++) { printf("original: %d",test[i]); printf("clone: %d",clone[i]); } Sleep(20000); }verstanden. da gibt mir der compiler 14 fehler ? also ich blick da nicht ganz durch kann mir jemand sagen, wie ich das einfacher clone ? (ohne jedes element zu kopieren)
mfg
house
-
Hallo
Du solltest dir mal genau die Fehler anschuen, die dir dein Compiler meldet.
Mach das doch so:
#include<iostream> //ohne .h #include<vector> int main() { std::vector<int> Ar1; std::vector<int> Ar2; //Ar1 füllen for(int i=0; i<Ar1.size(); ++i) Ar1.push_bak(i + 100); //nun kopieren, obwohl du auch gleich oben mit reinpacken kannst for(int i=0; i<Ar1.size(); ++i) Ar2[i] = Ar1[i]; }Das ist natürlich ungetestet.
chrische
-
Was soll den "iostream.h" sein!?
Auch verwendest Du C++/CLI! Das hat mit C++ nichts zu tun und Du solltest es nicht durcheinander bringen!!!
verwende entweder C++ *oder* C++/CLI. Aber bitte nicht beides. Als Anfänger bringt es einen nur durcheinander und erzeugt unnötigen Frust.Das reine C++ Beispiel wurde ja schon gepostet, das für C++/CLI sieht wie folgt aus:
using namespace System; int main() { array<int> ^test = gcnew array<int>(20); for(int i=0; i<20; i++) test[i]=(4468%(i+1))*4; array<int> ^clone = (array<int>^) test->Clone(); for(int i=0; i<20; i++) { Console::WriteLine("original: {0}", test[i]); Console::WriteLine("clone: {0}", clone[i]); } Threading::Thread::Sleep(20000); }
-
so und jetzt nochmal super einfach für jedermann ...
hab jetzt lange rumgeforscht und einiges über pointer und speicheradressen gelernt.
array kopieren sau einfach:
int liste1[80]; int liste2[80]; memcpy(&liste2[0], &liste1[0], sizeof(int)*80); // << sowas hab ich gesucht!!!! // liste eins wird in liste zwei kopiert! das wars schon!testprogramm von mir
#include <windows.h> #include <stdio.h> #include <iostream.h> int main() { int clone[20]; int test[20]; for(int z=0; z<20;z++) { test[z]=3*z; } memcpy(&clone[0], &test[0], sizeof(int)*20); for(int x=0; x<20;x++) { printf("%d",x); printf("original: %d \n",test[x]); printf("clone: %d\n \n",clone[x]); // ok die drei mal printf hätten nicht sein müssen, mir jetzt aber egal ^^ } Sleep(50000); }so einfach geht das!
aber danke für eure bemühungen!
-
Hallo
Trotzdem der falsche Header und dein Compiler sollte dir dies auch melden, außer er ist auch noch aus der Computersteinzeit.
chrische