Dynamisches Array kann nicht in einer Funktion genutzt werden?



  • RungAaz schrieb:

    Nun, ich hatte das ganze früher mit dem Vector-Template (wie von dir schon erwähnt) gemacht, aber warum eine zusätzliche Header-Datei einbinden wenn es bei C++ schon standartmäßig den new-Operator gibt?

    😮
    new[] und delete[] sind "low level" Operationen. Ein vektor ist ein "high level" Konzept. Da gibt es schon genug Unterschiede, die für vektor sprechen, zB:
    - Verwaltung des reservierten Speichers übernimmt der Vektor
    - C++ Implementierungen bieten oft einen "STL Debug-Modus" mit "sicheren Iteratoren" und zusätzlichen Bereichsüberprüfungen an.

    RungAaz schrieb:

    std::string habe ich nicht verwendet, da ich die Buchstaben einzeln brauche.
    Wobei ich die Zeichen, die ein String enthält auch einzeln Manipulieren kann - oder?
    Naja, warum einfach, wenn es auch kompliziert geht 😃

    Genau. Das ist die Frage. Warum new[]/delete[] benutzen, wenn Du auch vector oder string hättest nehmen können? Dass Du einen zusätzlichen Header einbinden musst ist kein guter Grund.

    kk



  • krümelkacker schrieb:

    new[] und delete[] sind "low level" Operationen. Ein vektor ist ein "high level" Konzept.

    low und high levels sollten nie ein Entscheidungskriterium sein, weil wie hier bei Vorliegen weiterer Gründe völlig irrelevant, und bei Nichtvorliegen stets zu Fehlschlüssen führend.



  • Also, auch wenn ich mir das Leben mit new und delete schwerer mache als es ist, bleibt die Erfahrung, die ich damit mache, und daruaf kommt es doch hauptsächlich an - oder nicht?

    Beispielsweise habe ich dadurch erfahren, dass ein Grund für das Verrecken des Programms während der Runtime das Nicht- bzw. Reinitialisieren eines Pointers sein kann.



  • RungAaz schrieb:

    Also, auch wenn ich mir das Leben mit new und delete schwerer mache als es ist, bleibt die Erfahrung, die ich damit mache, und daruaf kommt es doch hauptsächlich an - oder nicht?

    Beispielsweise habe ich dadurch erfahren, dass ein Grund für das Verrecken des Programms während der Runtime das Nicht- bzw. Reinitialisieren eines Pointers sein kann.

    Lass dir nichts einreden. Natürlich sind STL-Container normalerweise einfacher, weniger fehleranfällig und daher sinnvoller. Das heißt aber nicht, dass hier ständig Anfängern geraten werden muss, bloß nie - und sei es auch in Übungsprogrammen - new/delete/new[]/delete[] zu benutzen. Egal, mit wievielen 😮 - Smileys das hier immer unterstrichen wird, diesen Weg sollte man schon kennenlernen.



  • Wichtig ist, dass du zwischen Herumexperimentieren/Lernen/Erfahrung sammeln und produktivem Einsatz unterscheidest. Der erste Teil darf keineswegs zu kurz kommen. Doch wenn es für eine konkrete Problemstellung darum geht, mehrere Objekte gemeinsam zu verwalten, sind die STL-Container im Allgemeinen die bessere Wahl, da sie genau diese Anforderung erfüllen und dich von hintergründigen Aufgaben wie Speicherverwaltung entlasten.


Anmelden zum Antworten