C++ STL的set与unordered_set

有关C++ STL的set和unordered_set翻译了:

http://www.cplusplus.com/reference/set/set/

http://www.cplusplus.com/reference/unordered_set/unordered_set/?kw=unordered_set    

  

Set

  set内部元素总是排好序的,依据一种内部的排序对象Compare的严格的弱序化规则排序。有关weak ordering的更多解释看这里:https://en.wikipedia.org/wiki/Weak_ordering

set内部元素总是排好序的,依据一种内部的排序对象Compare的严格的弱序化规则排序。有关weak ordering的更多解释看这里:https://en.wikipedia.org/wiki/Weak_ordering

  set容器根据key获取元素的时间效率上不如unordered_set,but they allow the direct iteration on subsets based on their order.

  set的通常实现是二叉查找树。

unordered_set

  unordered_set存储无序的,不重复元素的容器。

  在unordered_set中,元素value跟key相同,能够唯一标识一个元素。key是不可变的,因此元素是不能变的,但是它们可以被插入或者删除。

  unordered_set内部的值不是排好序的,而是根据哈希值被组织到buckets中,这样做可以根据它们你的值快速获取单个元素,平均时间复杂度是O(1)的。

  unordered_set比set通过key获取元素更快,尽管要通过元素的子集进行范围迭代不是很高效。

  unordered_set的迭代器模式至少是forward iterators,有关forward iterators http://www.cplusplus.com/reference/iterator/ForwardIterator/