问题描述
|
我需要一个具有O(1)添加,查找和删除操作的数据结构,用于由客户端列表订阅的主题。
它需要支持的一些功能是:isTopicExists,isClientExists,getClientsForTopic,addClientForTopic,removeClientForTopic和getTopicsForClient。
给定一个主题名称,一个我们可以假定是唯一的客户端ID和一个客户端指针,什么是最好的数据结构?有哪些实现可用?
解决方法
哈希映射似乎不是一个坏主意。它的预期复杂度为O(1),但是有很多冲突的悲观场景可以使您到达O(n),具体取决于实现链接的方式。对数搜索在这里很难被击败,因此我将寻求一种自平衡的二进制搜索树,甚至是std :: map(在大多数STL实现中为红黑树)。提高效率的唯一方法是使用向量(数组),但前提是您的ID较小或偏移但彼此靠近。你不能在这里打败数学。