Вверх ↑
Этот топик читают: Гость
Ответов: 413
Рейтинг: 57
#1: 2020-11-20 21:57:38 ЛС | профиль | цитата
Доброе время суток!
Прошу подсказать как грамотно реализовать хранение в оперативной памяти нескольких (сколько не известно) структурированных списков (типа "ini" файлов) и быстрый доступ к ним без перебора всего списка. Сейчас я пытаюсь сделать всё на списках строк, каждая строка разделена несколькими разными разделителями (условный пример 131-457;12-98|12-54;7897-5454;1-3|56-456#...;...;..|..;..#..) и приходится перебирать список, а затем перебирать строку, затем разделять подстроку чтоб заменить одно значение в одной из строк, а теперь получается, что и списков строк несколько и их нужно тоже в один файл загнать. Началась путаница и скорость падает. Может кто-то сталкивался с подобной задачей и может поделится опытом?
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 167
Рейтинг: 7
#2: 2020-11-21 01:16:58 ЛС | профиль | цитата
Poputchik писал(а):
быстрый доступ к ним без перебора всего списка
это делается не так-то просто...
Poputchik писал(а):
как грамотно реализовать хранение в оперативной памяти нескольких структурированных списков (типа "ini" файлов)

Тут уж сказать что-то одно сложно... немного не ясна ваша задача.
Насчёт доступа :
1. доступ вы должны осуществлять по индексу. Причём только на основные элементы списка, не на вложенные в них списки.
2. Перед каждым таким основным элементом писать длину элемента как строки. Для поиска элемента сделать свой алгоритм, который будет бежать не по каждому символу списка, а скорее прыгать к началу следующего элемента в списке (текущая позиция после чтения длины элемента + длина элемента), что значительно быстрее. Когда дойдём к нужному элементу, нужно выдать просто строку, начинающуюся с разделительного символа между длиной элемента и элементом списка, с количеством элеметов, указанных перед элементом... А с ней уже делайте что хотите...
На этот алгоритм правда вам придётся убить много времени...

Вообще зачем вам сверхсложные структурированные списки со списками внутри списков?

Редактировалось 1 раз(а), последний 2020-11-21 01:17:48
карма: 0
c, c++, lua
1
Голосовали:Poputchik
Ответов: 8888
Рейтинг: 823
#3: 2020-11-21 20:46:54 ЛС | профиль | цитата
Poputchik, может так подойдёт? https://forum.hiasm.com/getfile/39173
карма: 19

1
Голосовали:Poputchik
Ответов: 413
Рейтинг: 57
#4: 2020-11-21 22:10:49 ЛС | профиль | цитата
UtoECat, Леонид, в очередной раз убедился, что свежий взгляд со стороны, уточняющий вопрос, простая подсказка или пример, могут "тупик" превратить в "перекрёсток" с несколькими возможными вариантами решения. Огромное спасибо! Буду пробовать.
карма: 0

0
4
Сообщение
...
Прикрепленные файлы
(файлы не залиты)