Я пытаюсь реализовать систему, в которой у меня будут пары структур ключ-значение. Их нужно будет хранить каким-то линейным образом (то есть их можно индексировать), и после того, как заданная позиция не может быть перемещена, поэтому вставки могут только добавляться (и на самом деле не может быть много сортировки). Как пример, вот что имеется в виду:
Data list:
0: { "somekey", somevalue }
1: { "someotherkey", someothervalue }
...
n: { "justanotherkey", justanothervalue }
Я разработал такую систему, чтобы при поиске ключа его индекс можно было кэшировать, а затем получить к нему доступ с постоянным временем. Теперь, поскольку у меня нет возможности предсказать порядок или объем данных, и я не могу их отсортировать, мне нужны идеи об алгоритмах или структурах данных, которые были бы лучше, чем просто линейный поиск, но при этом сохраняли бы ограничения. мне нравится.
У кого-нибудь есть идеи? Сомневаюсь, что смогу сильно его ускорить, но каждая мелочь помогает, так как это будет ядром моей системы. Заранее спасибо!
==EDIT==
Идея использования двух отдельных структур (таких как хэш-таблица и динамический массив) была моим первым намерением. К сожалению, у меня это не сработает, потому что я не могу разделить ключ и значение. Ключ будет использоваться для сообщений об ошибках и сообщениях, поэтому даже после кэширования индекса исходный ключ по-прежнему будет необходим для доступа. В основном они должны быть просто структурами массива, такими как:
struct Entry {
/* Key is actually a complex struct itself with string, and params */
Key key;
Data* data;
}