【发布时间】:2016-03-18 04:43:49
【问题描述】:
假设,我有一个多重集 A = {0, 1, 1, 1, 2}。如果a做如下操作:
multiset<int>::iterator it = A.lower_bound(2)
它返回一个迭代器。我可以轻松打印它的值。但是有没有办法知道它的位置呢?我的意思是它会返回 4。
【问题讨论】:
-
您可以使用
std::distance获取与A.begin()的偏移量。 -
我正在寻找一些快速的替代方案。据我所知,距离()的复杂度是 O(n)。如果我错了,请纠正我
-
是的,这种类型的迭代器 (bidirectional iterators) 是 O(n),不,真的没有更快的方法。