Wie verwalte ich große Zeichenketten am sinnvollsten?



  • Moin,

    ich möchte mir eine Datenstruktur schreiben mit der ich schnell und einfach die möglichkeit habe große Mengen an Text zu verwalteun und zu ändern. Allerdings stellt sich für micht jetzt die Frage wie ich das am sinnvollsten anstellen.

    Wenn ich einen normalen String verwende wird bei jedem vergrößern das gesammte array kopiert und neuangelegt. Bei kleinen Strings ist das ja kein Problem aber wenn die größer werden kann ich mir vorstellen das das probleme geben könnte.

    Ich habe mir nun überlegt das ich mir eine verlinkte Liste anlege. In jedem listen eintrag steht dann eine Zeile. So kann ich schnell und einfach zeileneinfügen oder mal kurz inhalte verändern.

    Was ist nun sinnvoller? Ein riesiges Array oder die linkliste aus Zeilen? Also aus sicht der performance wenn man große mengen text hat.

    Gruß, Prophet



  • Verwende evtl. eine Rope.



  • Vielen dank für die Antwort! Das klingt schon ziemlich interessant. Gebt es noch weitere möglichkeiten? Ist meine vll auch ok?



  • Was "ok" ist, hängt auch damit zusammen, was du mit deinen "großen Mengen an Text" machen willst. Eventuell reicht ja schon ein vector<string> oder list<string> aus, um die Daten (zeilenweise) unterzubringen und damit hantieren zu können.



  • Also im moment stelle ich noch viele überlegungen an aber grundsätzlich möchte ich vll irgendwann einen texteditor schreiben.



  • "Texteditor" ist noch recht allgemein. Einen Plaintext-Editor oder Code-Editor z.B. würde ich fast sicher als Liste von Textzeilen implementieren. Auch denkbar wäre natürlich ein "intelligenter" Editor, der nicht auf Zeilen- sondern auf Befehlsbasis agiert.

    Bei einem WYSIWYG-Editor würde ich entweder auf Absatz-Level agieren oder das Dokument gleich als Baum implementieren und über ein DOM ansprechen. In diesem Fall müsste man sich aber evtl. einen klugen Caching-Algorithmus ausdenken, damit kleine Änderungen nicht zu einem kompletten Neu-Rendern des DOM führen. Solch ein Caching braucht man dann wahrscheinlich eh, schon wegen der Grafik-Aktualisierung.



  • Also es sollte eingentlich eine Plaintext/Code-Editor werden. In erster linie nur für plaintext und dann später mit fähigkeiten wie syntax-highlighting usw.
    Mal sehen...

    Aber grundsätzlich ist mein zweiter ansatz also der sinnvollere?



  • Prophet05 schrieb:

    Aber grundsätzlich ist mein zweiter ansatz also der sinnvollere?

    Ich kann nicht behaupten, da Praxiserfahrung zu haben. Daher lautet mein Tip: Probier's aus. Hat sicher beides seine Vor- und Nachteile.



  • Ok, schon mal danke für deine "beratung". Wenn noch jemand einfälle tipps hat höre ich sie mir gern an!



  • Also WENN du es ausprobierst, dann probier es mit wirklich grossen Files aus. Sagen wir mal mindestens 200MB gross.
    Mit kleinen Dateien, also vielleicht 1-2MB, geht alles schnell.



  • Ok, danke werde ich machen.


Anmelden zum Antworten