Буферное окно

Буферное окно (англ. Gap buffer) в информатике это динамический массив, который позволяет эффективно производить вставку и удаление элемента в некоторой области. Буферное окно особенно распространено в текстовых редакторах, где большинство изменений текста происходят около позиции курсора. Текст хранится в большом буфере в двух смежных сегментах с окном для вставки элементов между ними. Перемещение курсора вызывает копирование текста с одной стороны окна в другую (иногда копирование задерживается до операции изменения текста). Вставка добавляет новый текст в конец первого сегмента. Удаление увеличивает размер окна.

Текст в буферном окне делится на две символьные строки, которые используют очень мало дополнительной памяти и которые могут быть легко отображены или использованы в поиске, в сравнение с другими структурами данных, к примеру связанных списков. Однако, операции в разных местах файла и те, которые заполняют окно (требуют создания нового окна) могут потребовать копирования большого объёма текста, что особенно неэффективно для больших файлов.

Использование буферного окна основано на предположении, что перекопирование происходит достаточно редко и его стоимость может быть амортизирована более дешевыми операциями. Это делает буферное окно более простой альтернативой Rope для использования в текстовых редакторах таких как Emacs.

Источник: Википедия