Есть такая вот мулька.
Если хочется хранить текст в одном буыере, то надо аллокировать буфер с запасом, и при этот хранить тот тексст что до курсора в начале буыера, а тот, что после -- в конце.
А курсор -- это будет такое место в середине буфера, куда можно добавлять новые данные.
Правда на совсременных компах это уже наверное не к чему, но когда-то во времена ТОРа и MSX-2 это было очень даже в тему
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
P>Почему же, если использовать не вектор строк, а вектор указателей на строки, то таких переалллокаций быть не должно, точнее, переаллокации конечно будут, ведь это вектор, но там будут колбасится уже указатели на строки, а не сами строки. Современные процы перемолотят это дело с такой скоростью что не заметишь. С точки зрения уменьшения таких переаллокаций подойдет любой список указателей, не обязательно даже хешированный, просто мапы, как ты говоришь, удобно использовать для создания меток и пр. идентификации строк.
Ну что ж, анонимы, любящие похихикать втихомолку, может, скажете, где тут смеяться? Если хранить в векторе объекты string, они будут идти в памяти последовательно и при удалении любой строки вектор сместит строки, идущие за удаленной строкой, т е будут потери при копировании. Если же хранить указатели на строки, то при удалении строки просто выкидывается указатель на char*, а память, выделенную под строку, уничтожаем. По-моему, все очевидно. ЕСли я в чем-то ошибаюсь, так поправьте по-человечески, вместо того, чтобы ставить идиотские улыбочки.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>