Доброе время суток!
Прошу подсказать как грамотно реализовать хранение в оперативной памяти нескольких (сколько не известно) структурированных списков (типа "ini" файлов) и быстрый доступ к ним без перебора всего списка. Сейчас я пытаюсь сделать всё на списках строк, каждая строка разделена несколькими разными разделителями (условный пример 131-457;12-98|12-54;7897-5454;1-3|56-456#...;...;..|..;..#..) и приходится перебирать список, а затем перебирать строку, затем разделять подстроку чтоб заменить одно значение в одной из строк, а теперь получается, что и списков строк несколько и их нужно тоже в один файл загнать. Началась путаница и скорость падает. Может кто-то сталкивался с подобной задачей и может поделится опытом?
Этот топик читают: Гость
Ответов: 413
Рейтинг: 57
|
|||
карма: 0 |
|
Ответов: 167
Рейтинг: 7
|
|||
Poputchik писал(а): быстрый доступ к ним без перебора всего спискаPoputchik писал(а): как грамотно реализовать хранение в оперативной памяти нескольких структурированных списков (типа "ini" файлов)Тут уж сказать что-то одно сложно... немного не ясна ваша задача. Насчёт доступа : 1. доступ вы должны осуществлять по индексу. Причём только на основные элементы списка, не на вложенные в них списки. 2. Перед каждым таким основным элементом писать длину элемента как строки. Для поиска элемента сделать свой алгоритм, который будет бежать не по каждому символу списка, а скорее прыгать к началу следующего элемента в списке (текущая позиция после чтения длины элемента + длина элемента), что значительно быстрее. Когда дойдём к нужному элементу, нужно выдать просто строку, начинающуюся с разделительного символа между длиной элемента и элементом списка, с количеством элеметов, указанных перед элементом... А с ней уже делайте что хотите... На этот алгоритм правда вам придётся убить много времени... Вообще зачем вам сверхсложные структурированные списки со списками внутри списков? Редактировалось 1 раз(а), последний 2020-11-21 01:17:48 |
|||
карма: 0 |
| ||
Голосовали: | Poputchik |
Ответов: 8937
Рейтинг: 824
|
|||
Poputchik, может так подойдёт? https://forum.hiasm.com/getfile/39173
|
|||
карма: 19 |
| ||
Голосовали: | Poputchik |
Ответов: 413
Рейтинг: 57
|
|||
UtoECat, Леонид, в очередной раз убедился, что свежий взгляд со стороны, уточняющий вопрос, простая подсказка или пример, могут "тупик" превратить в "перекрёсток" с несколькими возможными вариантами решения. Огромное спасибо!
![]() |
|||
карма: 0 |
|
4