Ich weiß, mehrere (alle?) STL-Implementierungen implementieren eine "kleine String" -Optimierung, wo statt der üblichen 3 Zeiger für Anfang, Ende und Kapazität eine Zeichenfolge speichert die tatsächlichen Zeichendaten in den Speicher für die Zeiger verwendet, wenn sizeof (Zeichen) < = sizeof (Zeiger). Ich bin in einer Situation, in der ich viele kleine Vektoren mit einer Elementgröße < = sizeof (Zeiger) habe. Ich kann keine Arrays fester Größe verwenden, da die Vektoren in der Lage sein müssen, die Größe dynamisch zu ändern und möglicherweise ziemlich groß werden können. Die mittlere (nicht die mittlere) Größe der Vektoren wird jedoch nur 4-12 Bytes betragen. Daher wäre eine "kleine String" -Optimierung, die an Vektoren angepasst ist, für mich sehr nützlich. Gibt es so etwas?kleine String-Optimierung für Vektor?
Ich denke darüber nach, meine eigenen zu rollen, indem ich einfach einen Brute-Force-Vektor in eine Zeichenkette umwandelt, d. H. Eine Vektorschnittstelle für eine Zeichenkette bereitstellt. Gute Idee?
Ihre Frage ist nicht sehr klar. Was meinen Sie mit einer "Vektor" -Schnittstelle zu einer "Zeichenkette"? Sprechen Sie über eine spezielle "Svector" -Klasse, um kleine Saiten zu halten? – dirkgently
Nein. Ich meine eine Zeichenfolge mit willkürlichen Werten anstelle von char-Typen - genau wie ein Vektor. Eine Vektorschnittstelle zu einer Zeichenfolge bedeutet, dass das Zeichenfolgenobjekt umhüllt und eine vektorkompatible Schnittstelle verfügbar gemacht wird, indem die fehlenden Funktionen wie push_back hinzugefügt werden. – BuschnicK
Wäre es nicht eher möglich, etwas mit dem Allokator zu tun? Sie würden nicht einmal 3 Zeiger im Wert von Speicher bekommen, da der Vektor auch einen Weg braucht, um zu wissen, ob er im "kleinen" oder "großen" Modus ist. – UncleBens