我需要很好地理解哈希集的架构和功能。
与STL::set相比,hash set与STL::set相比有什么优势?我认为 O(1) 时间进行搜索。如果这是真的,为什么不使用哈希表呢?他们的区别是重复元素?还是其他人?
对于STL::set来说,smallest/largest的查找时间也是O(1),因为已经排序了。
哈希集不是二叉搜索树,如何用 O(1) 找到最小或最大的元素?
阅读后 What is the difference between set and hashset in C++ STL?
我找不到答案。
我的想法:
什么时候应该使用哈希集而不是哈希表?
STL::set 是有序集。因此,获得最小/最大元素的时间复杂度为 O(1)。
如果是哈希集呢?它是有序的?
谢谢
最佳答案
A hash set is not a binary search tree, how to find the smallest or largest element with O(1)?
这正是关键区别之一:您无法在常数时间内找到散列集中的最小/最大元素。当然,您可以通过扫描整个集合在 O(n)
时间内完成。
另一个关键区别是遍历哈希集不会按排序顺序返回元素。
关于c++ - 一个哈希集可以找到 O(1) 的最小或最大元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8638280/