Eindimensionales Feld uebergeben
-
Guten Morgen und Hallo!
Hab folgendes Problem:
int const length_s1 = s1.size(); int *r = new int [length_s1]; print_LIS1(s1,r); delete r;= noch nicht das Problem; dies ist ein Teil meines Hauptprogrammes.
Wie kann man nun ein Feld uebergeben, sodass in der Funktion print_LIS1 auch wieder die dynamische Groesse des Feldes vorhanden ist?
int print_LIS1 (string const word, int occur ??? )
-
Hallo
std::vector benutzen, das kannst du also einfache Referenz übergeben. Erklärung findest du in dem Magazinartikel über die STL-Container hier im Forum.
bis bald
akari
-
Hallo,
erstmal solltest du daran denken, dass ein Feld mit der Array-Version von delete gelöscht werden muss:// nicht: delete r; // sondern: delete [] rWie kann man nun ein Feld uebergeben, sodass in der Funktion print_LIS1 auch wieder die dynamische Groesse des Feldes vorhanden ist?
Nur in dem du die Größe explizit als weiteren Parameter mit übergibst:
int print_LIS1 (string const word, int* occur, size_t size );Wobei das const bei string const word sinnlos ist.
Einfacher und sicherer wird es, wenn du statt eines dynamischen Arrays einen std::vector einsetzt.
-
@HumeSikkins Danke wegen dem Hinweis zum Loeschen! Hab ich voll uebersehen.
Werd es jetzt mal mit der dynamischen Variante probieren. Aber danke fuer die Hinweise bezueglich std::vector!
-
HumeSikkins schrieb:
int print_LIS1 (string const word, int* occur, size_t size );Wobei das const bei string const word sinnlos ist.
Einfacher und sicherer wird es, wenn du statt eines dynamischen Arrays einen std::vector einsetzt.
const hat aber dann sinn, wenn du es mit einer referenz verbindest, weil genau dann der Datentransfer gering gehalten wird, denn is wird nicht der gesamte string übergeben, sondern nur die Adresse, und man kann sich sicher sein, dass nach dem Aufruf der Funktion der String unverändert ist.