pointer array vs iterator vector



  • Hallo,

    ich würde gerne die vorteile/nachteile von "pointer arrays" und "iterator vector" wissen.

    soweit ich weiß sollte man pointer und arrays nicht in c++ benutzen da sie oft fehler und sicherheitsprobleme verursachen.

    stimmt das?

    ich hoffe ihr könnt mich ein wenig aufklären

    danke 🙂



  • Arrays würde ich nicht benutzen, weil ich mit STL-Containern gleichwertige und bessere Alternativen habe. Einerseits mit std::array , andererseits die dynamischen Container std::vector & Co.

    Zeiger würde ich sehr wohl benutzen. Allerdings würde ich damit verbundene Konzepte wie manuelle Speicherverwaltung vermeiden und stattdessen Idiome wie RAII einsetzen, bei denen Ressourcen automatisch freigegeben werden. Ausserdem kannst du in manchen Fällen statt Zeiger Referenzen benutzen, die eingeschränkt sind und damit weniger Fehlerquellen ermöglichen. Generell musst du bei solchen Verweisen aufpassen, dass das referenzierte Objekt gültig bleibt, solange du den Verweis benutzt.

    Ist vielleicht etwas viel auf einmal und trotzdem erst die halbe Wahrheit, aber diese Konzepte solltest du ausführlich studieren. Vielleicht mit einem Buch wie Effective C++, sofern du die Grundlagen bereits gut beherrschst.



  • Das Konzept hinter Iteratoren ist ja, dass man auf Daten aller Datenquellen (verschiedene Datenstrukturen, Streams, ...) gleich zugreifen kann. Was bringt das? Nun, dann muss man nicht eine Sortierfunktion für den std::string , eine für's C-Array und eine für die std::deque schreiben, nein, man fordert einfach den Sequenz-Anfang und das Sequenz-Ende in Form eines Iterators an. Die Funktion kann dann die Sequenz eines std::vector s genau gleich nutzen wie das einer std::list (naja, nicht ganz wegen den verschiedenen Iterator-"Stufen" (RandomAccess, Bidirectional, ...)).


Anmelden zum Antworten