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 Containerstd::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 diestd::dequeschreiben, nein, man fordert einfach den Sequenz-Anfang und das Sequenz-Ende in Form eines Iterators an. Die Funktion kann dann die Sequenz einesstd::vectors genau gleich nutzen wie das einerstd::list(naja, nicht ganz wegen den verschiedenen Iterator-"Stufen" (RandomAccess, Bidirectional, ...)).