这是asked for vectors。但对于套装和套装来说这是否可行? Co呢?
答案 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);