【发布时间】:2014-09-26 07:58:16
【问题描述】:
我使用 C++ STL 已经有一段时间了,但从未真正开始使用多重集(或多重映射)。我有一个基于计算具有相同键的元素数量的问题。例如。 这是一个 unordered_multiset {0, 2, 5, 1, 1, 2, 7, 5}
如果我说 count(5),它应该返回 2。有两种方法可以使用 unordered_multiset 的 C++11 标准来实现。 1)count 2) equal_range 然后减去生成的迭代器。
1) 据说在出现次数上花费线性时间,但 2) 是恒定时间。这是为什么呢?
【问题讨论】:
-
equal_range and then subtracting the resulting iterators如果您真的尝试过这样做,您会发现无法减去/添加前向迭代器。 -
注意-您的链接特定于
unordered_multisets(所以我在回答中讨论了这些)。尽管如此,您的问题的措辞“放松”到“multisets”/“multimpas”,它们实际上是具有完全不同属性的平衡二叉树......混淆这个问题不是一个好主意。
标签: c++ c++11 stl unordered-multiset