有关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/