kal*_*kal 24 c++ performance stl set hashset
我什么时候应该选择其中一个?是否有任何指针建议您使用正确的STL容器?
Mar*_*som 33
hash_set是一个不属于C++标准的扩展.查找应该是O(1)而不是O(log n)set,因此在大多数情况下它会更快.
迭代容器时会看到另一个区别.set将按排序顺序发送内容,而hash_set基本上是随机的(感谢Lou Franco).
编辑:引入的C++标准的C++ 11更新unordered_set应该是首选而不是hash_set.性能将类似,并由标准保证.名称中的"无序"强调迭代它将产生没有特定顺序的结果.
Ale*_*lex 15
stl::set实现为二叉搜索树.
hashset实现为哈希表.
这里的主要问题是许多人stl::set认为它是一个查找O(1)的哈希表,它不是,也没有.它确实有O(log(n))用于查找.然后阅读有关二进制树与哈希表的其他内容,以更好地了解数据结构.
| 归档时间: |
|
| 查看次数: |
37083 次 |
| 最近记录: |