优先选择unordered_set而不是vector

Pil*_*pel 2 c++ stl

可以肯定地说,如果我不希望容器中有重复项,并且我不关心元素位置,因为我只想遍历容器,那么我应该使用unordered_set而不是vector

YSC*_*YSC 5

不是完全。unordered_set不需要是连续的容器;如果您经常想要读取集合中包含的所有std::vector大量值,您可能更喜欢时间关键的应用程序。

std::unordered_set

在内部,元素不按任何特定顺序排序,而是组织到存储桶中。元素被放入哪个桶中完全取决于其值的哈希值。这允许快速访问单个元素,因为一旦计算出哈希值,它就会引用该元素放入的确切存储桶。

但在一般情况下,我会说是。


Sla*_*ica 5

可以肯定地说,如果我不想在容器中重复,并且我不关心元素位置,因为我只想遍历容器,那么我应该使用unordered_set而不是vector?

不它不是。这取决于许多因素。例如,如果您很少添加新元素,但是经常在容器上进行迭代,则最好std::vector手动使用和维护唯一性。可能还有其他因素影响您的决定。但是通常是的,您可能会喜欢,std::unordered_set因为它可以简化程序。