vak: (Default)
[personal profile] vak
Набрёл на полезные структуры данных, которые не встретишь в учебниках.
  • Строп - хранит длинную строку в виде дерева, состоящего из небольших подстрок.
  • Буферное окно - динамический массив, позволяющий эффективную вставку и удаление элемента в некоторой области.
  • Таблица фрагментов - представление текстового документа, редактируемого в текстовом редакторе.

Редактор Руднева, а точнее RAND Editor, лежащий в его основе, построен как раз на таблице фрагментов. Был бы интересный челлендж: вытащить из тех исходников реализацию таблицы фрагментов и переписать на современный Си++ или Rust.

Date: 2024-03-30 08:44 (UTC)
lxe: (Default)
From: [personal profile] lxe
Skip list популяризовал (канонизировав в Java CC) Doug Lea.

Интервальное отображение, кажется, идиоматический велосипед.

Date: 2024-03-30 08:46 (UTC)
From: [personal profile] ex0_planet
Велосипед, да, причём эталонный. Я про него узнал из каких-то дискуссий про тестовые задачи на собеседованиях -- его любят давать чтобы кандидаты пообламывались.
Edited Date: 2024-03-30 08:47 (UTC)

Date: 2024-03-30 14:13 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Скиплист прикольная штука, я в конце девяностіх делал реализацию для двунаправленного обхода с неуникальніми єлементами. В памяти он оч.ок, но на диске его реализовівать... так себе удовольствие.

Date: 2024-03-30 21:40 (UTC)
lxe: (Default)
From: [personal profile] lxe
А память все равно свопится на диск.)
Для локальности доступа, да, есть другие структуры.