我正在尝试实现一个系统,其中将有键值结构对。它们需要以某种线性方式保存(即,它们可以被索引),并且一旦给定位置就不能移动,因此插入只能进行追加(并且不能进行排序)。仅作为示例,以下是我的想法:
Data list:
0: { "somekey", somevalue }
1: { "someotherkey", someothervalue }
...
n: { "justanotherkey", justanothervalue }
我设计了这个系统,这样当搜索一个键时,它的索引可以被缓存,并能以恒定的时间访问。现在,由于我无法预测数据的顺序或数量,也无法对其进行排序,因此我需要一些算法或数据结构的想法,它们比仅使用线性查找好,但仍保持我想要的约束条件。
有人有什么想法吗?我怀疑我无法使其更快,但每一点帮助都很重要,因为这将是我的系统核心。提前感谢您!
==编辑==
使用两个不同的结构(如哈希表和动态数组)的想法实际上是我的第一个意图。不幸的是,这对我来说行不通,因为我不能分离键和值。该键将用于错误和消息,因此即使已经缓存了索引,仍需要访问原始键。基本上它们必须只是一些数组结构,例如:
struct Entry {
/* Key is actually a complex struct itself with string, and params */
Key key;
Data* data;
}