Подтвердить что ты не робот

Преимущества std::string не хранения данных в смежной памяти (pre С++ 11)

В C++98 и C++03 std::string мог быть сохранен он подрывая данные в несмежной памяти. В чем причина этого? Какая возможная оптимизация могла быть достигнута благодаря этому расслабленному требованию? Использовал ли какой-либо компилятор/архитектура?

Если у вас есть части строки, хранящиеся в разных ячейках памяти, не будет ли слишком сложным итератор? И класс тоже, так как ему нужно точно знать, где находятся разные части строки.

4b9b3361

Ответ 1

Основная причина заключалась в том, что конкатенация строк может иметь место без перераспределения. Я считаю, что ранние версии STLPort использовали это.

Другая причина заключается в том, что можно было реализовать копирование на запись или даже частичную копию на запись. Хотя другие требования, предъявляемые к std::string (особенно семантика перемещения С++ 11), теперь означают, что это уже невозможно.