C ++中的密集索引映射

时间:2012-10-25 09:25:16

标签: c++ map

我很难找到一种容器,也许我使用的命名不正确。

有没有人知道一个类似于std :: map的C ++容器,但关键是整数类型。它通过索引进行插入,删除和检索具有O(1)复杂度。 它的迭代器应该遍历由索引(键)映射的元素。它也应该以有序的方式遍历索引。它应该是随机访问并且具有O(1)复杂度以移动到任意位置。

我愿意考虑这样一种情况:迭代器是双向的,其递增/递减是O(1)复杂度。

1 个答案:

答案 0 :(得分:2)

你问的是不可能的

O(1)按顺序删除,插入,搜索和迭代将通过推送所有元素,然后按顺序迭代来启用O(n)排序。

integer sorting已知的最佳算法是O(n * sqrt(loglogn)),因此,如果我们有类似您描述的内容,它将胜过最知名的整数排序算法。


编辑(根据您对该问题的评论):

如果您可以使用O(1)搜索/查找/插入,而无需保证迭代顺序 - 您可以使用unordered_map来实现hash table