【问题标题】:Position of a multiset lower_bound iterator多重集 lower_bound 迭代器的位置
【发布时间】: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),不,真的没有更快的方法。

标签: c++ stl iterator multiset


【解决方案1】:

使用std::distance

#include <iterator>
#include <set>

int main() 
{
    multiset<int> A = { 0, 1, 1, 1, 2 };
    multiset<int>::iterator it = A.lower_bound( 2 );
    size_t dist = distance( A.begin(), it );
}

【讨论】:

  • 他们有什么快速的替代方案吗?
  • @Ihzaz Abrar 我不认识其他人
猜你喜欢
  • 1970-01-01
  • 2019-11-20
  • 2021-11-02
  • 2017-03-21
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 1970-01-01
相关资源
最近更新 更多