На практике это, вероятно, будет "достаточно быстро".Тем не менее, я все еще написал бы класс EditBuffer, инкапсулируя его и предоставив этому новому классу интерфейс, настроенный для моего приложения.Таким образом, тот факт, что я использую std :: string, а не что-то другое, становится деталью реализации EditBuffer, которую можно изменить в любое время.(Возможно, вы захотите попробовать также std :: vector. И одна из наиболее распространенных оптимизаций - сохранить дыру в курсоре: текст за курсором находится в конце буфера. Перемещение курсора означает перемещение одного символа, но вставка обычнов постоянное время.)