C ++ STL关联容器:从元素中获取迭代器?

时间:2015-04-01 11:11:37

标签: c++ dictionary iterator set

这是asked for vectors。但对于套装和套装来说这是否可行? Co呢?

3 个答案:

答案 0 :(得分:0)

c.equal_range(elem);

表示集合,或

c.equal_range(elem.first);

对于map类型的容器,将返回一对与元素等效的(在容器规则下)的迭代器。这需要在O(k)和O(lg n)时间之间,其中n是容器中元素的数量,k是伪等价于elem / elem.first的元素数量(伪,因为哈希冲突模数桶数也算数)。平均值是常数(对于无序)/ lg n(对于有序)。

答案 1 :(得分:0)

关联容器几乎是设计的,用于查找给定元素的迭代器。所以只需使用容器的find功能即可。请注意,它不是固定时间,它将具有容器查找的时间复杂度(对于有序容器的对数,无序容器的平均常量):

auto iteratorToElement = container.find(element);

如果您需要能够在固定时间内执行此操作,则可能需要使用Boost.MultiIndex代替functionality

答案 2 :(得分:0)

设置find函数,返回迭代器

const_iterator find (const value_type& val) const;
iterator       find (const value_type& val);

eg:
  std::set<int> s;
  std::set<int>::iterator it;

  it = s.find(v);