如果我们在std :: set中插入随机整数,并读取该集合,我们得到有序序列。基本上,我们有隐式排序。但是,我们在这里有什么样的排序算法?它是heapsort吗?
答案 0 :(得分:1)
至少通常情况下,这是树种。也就是说,将项目插入到平衡的二叉搜索树(通常是红黑树)中,并按顺序遍历该树。
答案 1 :(得分:1)
C ++标准并未对std::set
或std::map
强制执行任何类型的排序算法。因此,他们的实现可能在不同平台之间有所不同。
据说,它们通常被实现为红黑树,这是一种自平衡的二叉搜索树。他们不会对他们的内容进行排序,他们会在插入新项目时保持其内容的顺序。向它们插入单个项目通常是O(logn)。
答案 2 :(得分:1)
std::set
和std::map
通常使用自平衡二叉搜索树来实现,通常是红黑树,因为它们往往是实践中最快的。有关这些数据结构的详细信息,您可能需要查阅教科书,例如Corge 等人的算法简介或者Sedgewick的算法