我不知道用于此问题的数据结构。 我希望结构具有:
实际系统是:
我有一堆对象,每个对象都有一个唯一的id。 我的程序需要接收id的请求并返回相关对象。
每当它收到我想要的请求时:搜索结构以查看它是否在那里。 如果是,请退货。 如果不是,请将其从磁盘加载到内存中(将其放入结构中,以便下次请求时不必使用磁盘)然后将其返回。
我正在使用C.
这是一个类似的问题,但我不确定它有多相关。
在你的情况下, 哈希表可能是一个非常好的解决方案 – 即使它存在切割时它不在O(1)中:它是一个非常有效的解决方案。
唯一适合它的结构是…… C数组。 SomeObject arr[MAX_NUM_OBJECTS]
以快速有效的方式处理这个问题
为什么不把它们全部放在一个文件中,mmap文件,让操作系统处理缓存?
取决于数据和密钥的数量。 散列表适用于难以比较的大量数据(字符串,复杂数据结构等)。 对于具有整数键的较小数据集,通常可以使用简单的红黑树获得更好的性能。 这是因为好的散列函数需要时间来执行。
实际上,这些都不符合你的要求。 O(1)访问只能在完美的哈希(并且没有哈希是完美的)和数组中真正实现。 同时O(1)插入只能在队列,出队,堆栈,链表和完美哈希中进行(同样,没有哈希是完美的)。
为了给你一个更好的答案,我们真的需要知道你想要完成什么。 有关您使用数据结构的更多信息会有所帮助
以上就是c/c++开发分享O(1)随机插入/删除和O(1)随机访问的数据结构是什么?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562631.html