Veröffentlicht 10. September 201015 j Hallo, ich habe folgendes Problem. Ich brauche in meinem programm ein globales Array vom eigenen Typ Stopword. Jedoch weiß ich die Länge erst, wenn das Programm eine SQL-Abfrage gemacht hat. Gibt es eine Möglichkeit die Länge des Arrays dann erst neu anzugeben? Gruß
10. September 201015 j Du kannst die Größe von Arrays nicht ändern. In C kannst du den Speicher, wenn du ihn dynamisch (mit malloc) reserviert hast, mit realloc vergrößern. In C++ würde man in so einem Fall gar kein Array verwenden, sondern eine der Containerklassen der Standardbibliothek, wie std::vector. Globale Variablen braucht man übrigens äußerst selten, und meistens sind sie ein Zeichen von schlechtem Stil.
10. September 201015 j Hehe...Das würde ich nicht abstreiten, aber besser krieg ich's nicht hin. Ich werd's mal mit realloc versuchen. Danke
10. September 201015 j Ich behaupte mal, dass Du evtl. nicht weißt, was Du brauchst Vielleicht ist eine Liste ja auch das, was Du benötigst. Und vielleicht brauchst Du auch kein globales Array, sondern nur einen Speicherblock mit Zeiger dran zum draufzeigen und rundreichen ... oder oder oder ... vielleicht solltest Du das Problem nochmal überdenken, dann löst sich Deine Frage in wohlgefallen auf.
11. September 201015 j Du könntest dir zur not auch noch ne Funktion schreiben, welche die Arraygröße verändert. Funktioniert natürlich nur solange du das Array vergrößern willst . Hier ein kleines Beispiel für ein Array vom Typ Integer: int* renew (int* old, int sizeold, int sizenew) { int* tmp = new int[sizenew]; if (sizeold < sizenew) { for (int i=0;i<sizeold;i++) { tmp[i] = old[i] } delete [] old; } return tmp; } lg Gateway
11. September 201015 j int* tmp = new int[sizenew]; Ich vermute, er benutzt C, also nix mit new . Mit C++ würde ich davon abraten, mit rohen Zeigern zu hantieren.
11. September 201015 j Ich vermute, er benutzt C, also nix mit new . Das stimmt. Er hatte die Sprache nicht explizieht angegeben, darum hab ichs einfach mal erwähnt .
14. September 201015 j Ok...hab mir jetzt ne liste geschrieben und übergebe die einfach an die entsprechenden Funktionen. Ist natürlich wirklich etwas eleganter...danke für die Tipps. Gruß
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.