Страница 1 из 3

Динамические списки записей

СообщениеДобавлено: 21.08.2020 12:54:46
GAMER
Есть необходимость держать массив/списки/что-либо для записей. Полями записей являются строки, датавремя, указатели на MySQL-соединения.
В списке нужно добавлять и удалять записи, которые могут быть в середине, а не в конце списка.
Есть современные решения или делатть классически а-ля стеки, в которых елементом записи является указатель на следующий елемент?

или использовать динамический массив, в котором последний елемент пишеться на место удаляемого, а размер массива уменьшаеться на 1?

Re: Динамические списки записей

СообщениеДобавлено: 21.08.2020 13:40:35
Снег Север
TList, TobjectList, TClassList...

Re: Динамические списки записей

СообщениеДобавлено: 21.08.2020 14:44:56
GAMER
А как держать записи в них? Записи разной природы (типа).

Добавлено спустя 1 час 32 минуты 1 секунду:
Почитал о TList. Буду пробовать

Re: Динамические списки записей

СообщениеДобавлено: 21.08.2020 18:31:55
Снег Север
К записи можно прицепить любой объект. TobjectList может автоматически удалять объекты при удалении записи (если свойство OwnsObjects True, обычно стоит по дефолту).

Re: Динамические списки записей

СообщениеДобавлено: 22.08.2020 09:19:31
olegy123

Re: Динамические списки записей

СообщениеДобавлено: 22.08.2020 15:38:39
iskander
GAMER писал(а):А как держать записи в них? Записи разной природы (типа).

Если речь про гетерогенные списки, то есть встроенный тип Variant.

Снег Север писал(а):TList, TobjectList, TClassList...

К сожалению всё перечисленное не обеспечивает вставку/удаление элементов в середину списка за постоянное время.

Re: Динамические списки записей

СообщениеДобавлено: 22.08.2020 21:35:23
Снег Север
iskander писал(а):К сожалению всё перечисленное не обеспечивает вставку/удаление элементов в середину списка за постоянное время.

И что с того?

Re: Динамические списки записей

СообщениеДобавлено: 22.08.2020 22:01:01
iskander
Снег Север писал(а):И что с того?

Кому?

Re: Динамические списки записей

СообщениеДобавлено: 23.08.2020 06:23:35
olegy123
iskander писал(а):К сожалению всё перечисленное не обеспечивает вставку/удаление элементов в середину списка за постоянное время.

TFPList <> TList
TFPList как раз использует механизм связаных цепочек, элемент указывает на следующий элемент, против TList, где используется массив.
скорость вставки в любом месте не должна быть разной.

говорят есть дженерик TFPGList

Re: Динамические списки записей

СообщениеДобавлено: 23.08.2020 13:33:34
iskander
Все упомянутые контейнеры (в том числе TFPGList) конечно же построены на основе массива.
Впрочем, это всё имеет значение только если важна производительность.
Обычно важна.

Re: Динамические списки записей

СообщениеДобавлено: 23.08.2020 14:32:29
zub
LinkedList есть в fcl-stl

Re: Динамические списки записей

СообщениеДобавлено: 23.08.2020 15:52:30
Снег Север
iskander писал(а):Впрочем, это всё имеет значение только если важна производительность.
Обычно важна.

Если это не драйвер, игровой движок, микроконтроллер, то обычно совершенно не важна.

Re: Динамические списки записей

СообщениеДобавлено: 23.08.2020 16:54:47
iskander
zub писал(а):LinkedList есть в fcl-stl

А как у него дела с доступом по индексу?

Снег Север писал(а):Если это не драйвер, игровой движок, микроконтроллер, то обычно совершенно не важна.

"Счастливые часов не наблюдают"(c)?

Re: Динамические списки записей

СообщениеДобавлено: 23.08.2020 17:03:13
Снег Север
iskander писал(а):"Счастливые часов не наблюдают"(c)?

Умные расставляют правильные приоритеты. Лично я за 30 лет вообще еще не встречал программ, для которых (если это не из приведенного мной выше перечня) скорость работы любого list'а была существенной.

Re: Динамические списки записей

СообщениеДобавлено: 23.08.2020 17:07:30
iskander
Ну так и я о том же.
Полагаю ДатаБазаМордоСтроение?