选择 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).
例如,选择 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).