Я довольно новичок в C++, но я знаю, что вы не можете просто использовать память волей-неволей, как это позволяет делать класс std::string. Например:
std::string f = "asdf";
f += "fdsa";
Как строковый класс справляется с увеличением и уменьшением размера? Я предполагаю, что он выделяет объем памяти по умолчанию, и если ему нужно больше, он new
s выделяет больший блок памяти и копирует себя в него. Но не было бы довольно неэффективно копировать всю строку каждый раз, когда нужно изменить ее размер? Я действительно не могу придумать другой способ, которым это можно было бы сделать (но, очевидно, кто-то это сделал).
И в этом отношении, как все классы stdlib, такие как вектор, очередь, стек и т. д., так прозрачно обрабатывают рост и сжатие?