选择 unorder_set 而不是矢量的原因

Reasons for preferring unorder_set to a vector

例如,选择 unordered_set 而不是向量的原因是什么?
我试图提出一些想法,但我无法想象为什么我不会这样做。对于接口?还有什么?

unordered_set 允许您在 O(1) 平均时间内检查元素是否属于该集合。其他标准集合操作(​​插入、删除)也是O(1)。所以一个集合(或者unordered_set)主要是当你需要的是一个数学的时候set:它是一个容器(数据结构),专门为支持标准的集合操作而开发的。

假设您有一些单词词典,并且您希望能够快速检查给定单词是否属于该词典。与将单词存储在 vector.

中相比,将词典单词存储在 unordered_set 中将为您提供更快的解决方案
  • 您可以在 unordered_set.

  • 中存储不可复制、不可移动的对象
  • 查找给定元素是否在集合中的复杂度为 O(1) 而不是 O(n),如果保持向量排序(其本身为 O(n ) 在插入时)。

  • unordered_set 不允许重复。

  • 删除给定元素的复杂度为 O(1)。在排序向量的情况下,它是 O(n).