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