std :: string und die automatische Größenänderung des Speichers

Ich bin ziemlich neu in C ++, aber ich weiß, dass Sie nicht einfach Speicher verwenden können, wie es die std :: string-Klasse anscheinend zulässt. Zum Beispiel

std::string f = "asdf";
f += "fdsa";

Wie wird die String-Klasse größer und kleiner? Ich nehme an, es reserviert eine Standardmenge an Speicher und wenn es mehr braucht, ist esnews ein größerer Speicherblock und kopiert sich dazu. Wäre es nicht ineffizient, wenn Sie die gesamte Zeichenfolge jedes Mal kopieren müssten, wenn die Größe geändert werden muss? Ich kann mir keinen anderen Weg vorstellen, wie es gemacht werden könnte (aber offensichtlich hat es jemand gemacht).

Und wie gehen alle stdlib-Klassen wie vector, queue, stack usw. so transparent mit dem Wachsen und Schrumpfen um?

Antworten auf die Frage(6)

Ihre Antwort auf die Frage