c++ - 什么是基于集合的数据结构

标签 c++ data-structures set

在 C++ 中,map 基于黑红树,因此插入/删除函数将花费 O(logn),而 hash_map 基于哈希。

但我想知道基于什么数据结构设置?

set 和 map 一样排序,那么 set 是否也基于黑红树?

它的键和值是如何存储在那棵树中的?

如果是这样,unorder_set 的数据结构是什么?谢谢!

最佳答案

没有保证。该标准唯一要求的是操作成本,因此实现者可以自由使用他们想要的任何数据结构。通常 std::setstd::map 是平衡二叉树。

另外,std::unordered_setstd::unordered_map 是哈希表。我相信这实际上是由标准保证的,因为您可以手动指定散列函数。

关于c++ - 什么是基于集合的数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19692399/

相关文章:

c++ - 调用者是否需要释放通过未记录的 WM_GETISHELLBROWSER (WM_USER+7) 消息获得的 IShellBrowser*?

c++ - 将十六进制转储值作为字符串传递

c++ - 循环 typedef 列表

java - 用于存储来自文件输入 Java 的动态大小的 block 的最佳数据结构

c++ - 填充红黑树的最有效方法是什么?

scala - 从一组键创建映射

c++ - 专门化模板类中的模板结构

arrays - 结构体数组或元胞数组

java - 在 Java 中使用列表来存储用户输入并执行任务

c++ - 如何定义另一个类数据成员上的 `std::set` 排序?