Für die Datenkomprimierung muss ich Dateien (hier Textdateien) öffnen und ihren gesamten Inhalt in Variablen speichern.String vs. Vektor zum Speichern großer Texte
Ist es besser, Strings oder Vektoren von Zeichen zu verwenden, um wirklich große Texte (Millionen oder mehr Zeichen) zu speichern?
Mit besser, ich meine schneller über jedes Zeichen zu durchlaufen, und auch schneller die count
Funktion zu zählen, wie viele Vorkommen eines bestimmten Zeichens gibt es im Text sind.
Größe ist nicht wirklich ein Problem hier als Zeichenfolge und Vektor können viele Zeichen speichern, und ich kann, wenn nötig, brach den Text in ein paar Subtexte.
Die tatsächliche Leistung hängt von der jeweiligen C++ - Implementierung ab. In dieser Hinsicht gibt es keinen wesentlichen Unterschied zwischen Strings und Vektoren. Beide sind Random-Access-Container, die vergleichbare Fähigkeiten bieten. Du wirst mehr Zeit damit verbringen, das herauszufinden, dann könntest du vielleicht hoffen, dass du sparst, indem du den angeblich optimalsten Container auswählst. –
In der Praxis gibt es höchstwahrscheinlich keinen Unterschied. Beide Typen stellen Vorwärtsiteratoren bereit, die (normalerweise) als Zeiger implementiert sind. Der einzige semantische Unterschied besteht darin, dass Leser Ihres Codes wahrscheinlicher erwarten, dass "NUL" -Zeichen in die kontrollierte Sequenz für einen "Vektor" eingebettet sind. Da es sich jedoch um Textdateien handelt, ist das kein Problem. – IInspectable
Ihr Engpass ist nicht der Container im Speicher, sondern Datei-I/O. Sie möchten einen Container verwenden, den Sie entweder * anpassen * oder die Kapazität während der Konstruktion festlegen können. Die Neuzuweisung von Speicher beim Lesen aus einer Datei ist sehr langsam. –