c++ - C++ STL中的set和hashset有什么区别?

标签 c++ performance stl set hashset

我什么时候应该选择一个而不是另一个? 对于使用正确的 STL 容器,您有什么建议可以推荐吗?

最佳答案

hash_set 是不属于 C++ 标准的扩展。 set 的查找应该是 O(1) 而不是 O(log n),因此在大多数情况下会更快。

当您遍历容器时会看到另一个区别。 set 将按排序顺序传递内容,而 hash_set 基本上是随机的(感谢 Lou Franco)。

编辑:对 C++ 标准的 C++11 更新引入了 unordered_set这应该是首选而不是 hash_set。性能将相似,并由标准保证。名称中的“无序”强调迭代它会产生没有特定顺序的结果。

关于c++ - C++ STL中的set和hashset有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2518305/

相关文章:

c++ - 当我打开文件名在 std::string 中的 fstream 时,为什么会出现 "no matching function"错误?

performance - Tsung 因 ** 终止原因 == ** {{badmatch,false}

objective-c - 处理大型运行时生成的瓦片 map 的有效方法?

c++ - 删除元素时使用 STL 映射的迭代器时遇到问题

c++ - 一组元组 (i, v) 使得所有元组具有不同的 i 值

c++ - 如何正确读取子进程的 stdout/stderr 输出?

c++ - 如何从 openGL 屏幕写入 PNG 文件?

c++ - 使用断言参数存在的参数化类创建。使用工厂?

c# - 类型描述符性能

c++ - std::set::erase(const key_type& key) 如何导致段错误?