我们在std :: map或std :: set中有什么样的排序?

时间:2015-01-27 02:31:12

标签: c++ algorithm sorting

如果我们在std :: set中插入随机整数,并读取该集合,我们得到有序序列。基本上,我们有隐式排序。但是,我们在这里有什么样的排序算法?它是heapsort吗?

3 个答案:

答案 0 :(得分:1)

至少通常情况下,这是树种。也就是说,将项目插入到平衡的二叉搜索树(通常是红黑树)中,并按顺序遍历该树。

答案 1 :(得分:1)

C ++标准并未对std::setstd::map强制执行任何类型的排序算法。因此,他们的实现可能在不同平台之间有所不同。

据说,它们通常被实现为红黑树,这是一种自平衡的二叉搜索树。他们不会对他们的内容进行排序,他们会在插入新项目时保持其内容的顺序。向它们插入单个项目通常是O(logn)。

答案 2 :(得分:1)

std::setstd::map通常使用自平衡二叉搜索树来实现,通常是红黑树,因为它们往往是实践中最快的。有关这些数据结构的详细信息,您可能需要查阅教科书,例如Corge 等人算法简介或者Sedgewick的算法