【发布时间】:2015-09-18 04:50:42
【问题描述】:
我从谷歌读到一个关于设计一个支持快速插入、擦除和擦除随机元素的类的面试问题。我正在考虑 cpp 中的 unordered_set,插入和擦除已经存在。然后对于删除随机元素,我认为 unordered_set 的 begin() 方法指向一个随机元素,我可以获取它的值并将其从集合中删除。这是否总是可以从集合中删除随机值?谢谢!
编辑:如果您能想到其他一些数据结构,请随时发表评论,不必是 unordered_set。
【问题讨论】:
-
取决于它的随机性。例如,如果您有两个相同的集合,它们的开始迭代器可能指向相同的元素……您只是无法预测它们将是哪些元素。
-
begin()方法指向实现定义的元素。我认为这不太可能是随机的。 -
hmm... 即使
rand函数通常也是伪随机正确的
标签: c++ data-structures hash hashtable unordered-set