【发布时间】:2010-01-20 01:31:03
【问题描述】:
是否有任何已知的数据结构提供 O(1) 随机访问,而不使用大小为 O(N) 或更大的连续内存块?这是受到this answer 的启发,出于好奇而不是任何特定的实际用例而提出要求,尽管它可能在堆严重碎片化的情况下有用。
【问题讨论】:
-
专门解决来自
std::vector问题的一些混淆:大多数时候人们在将&vector[0]视为C 数组的上下文中谈论这个。病态向量实现可能会破坏 C 数组的兼容性,同时只需以相反的顺序存储元素即可轻松满足 C++98 的 O(1) 随机访问要求。 -
那个defect已经在C++03中修复了。对于在现实世界的图书馆中从未被误解的已知缺陷,真的不值得争论可能拥有的东西。在velocityreviews.com/forums/… 上查看 Stroustrup 的 cmets
-
对,我只是在解释为什么 C++98 的要求只暗示了连续内存而不是需要连续内存(这就是引发这个问题的原因)。我完全同意这不是问题。
-
@jamesdlin:啊,我没有从问题中看到这种混乱。
标签: performance arrays data-structures memory-management big-o