0

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

有谁知道像 std::map 这样的 C++ 容器,但关键是整数类型。它具有按索引插入、删除和检索的 O(1) 复杂度。它的迭代器应该遍历由索引(键)映射的元素。它还应该以有序的方式遍历索引。它应该是随机访问并且具有 O(1) 复杂度才能移动到任意位置。

我愿意考虑迭代器是双向的并且它的递增/递减是 O(1) 复杂度的情况。

4

1 回答 1

2

你在问不可能的事

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

以整数排序而闻名的最佳算法是O(n * sqrt(loglogn)),所以如果我们有像您描述的那样 - 它会击败最知名的整数排序算法。


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

如果您可以使用O(1)搜索/查找/插入,但不保证迭代顺序 - 您可以使用unordered_map,它实现了一个哈希表

于 2012-10-25T09:27:33.037 回答