客户主题列表的数据结构

时间:2011-05-19 23:27:06

标签: c++ data-structures hashmap

我需要一个数据结构,对客户列表订阅的主题进行O(1)添加,查找和删除操作。

它需要支持的一些功能是:isTopicExists,isClientExists,getClientsForTopic,addClientForTopic,removeClientForTopic和getTopicsForClient。

给定一个主题名称,我们可以认为是唯一的客户端ID,以及客户端指针,使用哪种最佳数据结构?有哪些实现?

1 个答案:

答案 0 :(得分:2)

哈希映射似乎不是一个坏主意。它的预期复杂度是O(1),但是有很多冲突的悲观场景可以根据链接的实现方式将你带到O(n)。对数搜索在这里很难被击败,所以我会选择自平衡二分搜索树,甚至是std :: map(大多数STL实现中的红黑树)。提高效率的唯一方法是使用向量(数组),但只​​要您的ID很小或已经过时但彼此接近。你不能在这里击败数学。