Динамические списки записей
Модератор: Модераторы
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Динамические списки записей
Есть необходимость держать массив/списки/что-либо для записей. Полями записей являются строки, датавремя, указатели на MySQL-соединения.
В списке нужно добавлять и удалять записи, которые могут быть в середине, а не в конце списка.
Есть современные решения или делатть классически а-ля стеки, в которых елементом записи является указатель на следующий елемент?
или использовать динамический массив, в котором последний елемент пишеться на место удаляемого, а размер массива уменьшаеться на 1?
В списке нужно добавлять и удалять записи, которые могут быть в середине, а не в конце списка.
Есть современные решения или делатть классически а-ля стеки, в которых елементом записи является указатель на следующий елемент?
или использовать динамический массив, в котором последний елемент пишеться на место удаляемого, а размер массива уменьшаеться на 1?
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
TList, TobjectList, TClassList...
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
К записи можно прицепить любой объект. TobjectList может автоматически удалять объекты при удалении записи (если свойство OwnsObjects True, обычно стоит по дефолту).
GAMER писал(а):А как держать записи в них? Записи разной природы (типа).
Если речь про гетерогенные списки, то есть встроенный тип Variant.
Снег Север писал(а):TList, TobjectList, TClassList...
К сожалению всё перечисленное не обеспечивает вставку/удаление элементов в середину списка за постоянное время.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
iskander писал(а):К сожалению всё перечисленное не обеспечивает вставку/удаление элементов в середину списка за постоянное время.
И что с того?
Снег Север писал(а):И что с того?
Кому?
iskander писал(а):К сожалению всё перечисленное не обеспечивает вставку/удаление элементов в середину списка за постоянное время.
TFPList <> TList
TFPList как раз использует механизм связаных цепочек, элемент указывает на следующий элемент, против TList, где используется массив.
скорость вставки в любом месте не должна быть разной.
говорят есть дженерик TFPGList
Все упомянутые контейнеры (в том числе TFPGList) конечно же построены на основе массива.
Впрочем, это всё имеет значение только если важна производительность.
Обычно важна.
Впрочем, это всё имеет значение только если важна производительность.
Обычно важна.
LinkedList есть в fcl-stl
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
iskander писал(а):Впрочем, это всё имеет значение только если важна производительность.
Обычно важна.
Если это не драйвер, игровой движок, микроконтроллер, то обычно совершенно не важна.
zub писал(а):LinkedList есть в fcl-stl
А как у него дела с доступом по индексу?
Снег Север писал(а):Если это не драйвер, игровой движок, микроконтроллер, то обычно совершенно не важна.
"Счастливые часов не наблюдают"(c)?
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
iskander писал(а):"Счастливые часов не наблюдают"(c)?
Умные расставляют правильные приоритеты. Лично я за 30 лет вообще еще не встречал программ, для которых (если это не из приведенного мной выше перечня) скорость работы любого list'а была существенной.
Ну так и я о том же.
Полагаю ДатаБазаМордоСтроение?
Полагаю ДатаБазаМордоСтроение?
