有没有用C++编写的平面有序图(非节点式)容器库?

问题描述 投票:0回答:1

我们知道 unordered_map/hashmap 你可以有扁平化的实现,如 absl::flat_hash_map 而不需要任何节点。所以,当我不关心 指针稳定性,内容直接存储在内存数组中,而不使用节点作为指针间接。我不知道具体的细节,但我猜测如果有一个非常大的表,并使用开放的寻址,你可以把所有的东西都放在一个连续的大空间里。

是否有可能为 ordered_map 而不使未排序输入的插入次数达到O(n)?如果它的插入是O(logn)就更好了,但所有的东西都不需要使用node来存储?Boost的 平面图 是由一个向量支持的,因此对于未排序的输入,插入是O(n),因为它一直在移动所有大于输入的现有元素,以保持一切排序。

澄清一下。很明显,我知道STL中没有这样的实现,我是在问有没有第三方的实现。如果不可能,有什么原因吗?请原谅我的理解有限,但也许是因为hashmap给了我们以任何方式存储对象的自由,只要它与哈希结果相匹配,而对于有序地图,所有元素都必须被排序,所以对于未排序的输入,你没有办法在不移动东西的情况下将所有东西都存储在一起,或者反而必须使用中间指针重定向,将对象存储在其他地方的实际内存中?

我隐隐约约感觉到这是不可能的,但我只是想知道是否有一些我没有想到的天才实现。

c++ containers flatmap ordered-map
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.