[英]C++ STL associative containers: Get iterator from element?
c.equal_range(elem);
對於像集,或
c.equal_range(elem.first);
對於地圖類型的容器,將返回與該元素等效的一對迭代器(在容器的規則下)。 這需要O(k)和O(LG n)的時間,其中n是在所述容器元件的數目之間,並且k是元件的數量的偽相當於elem
/ elem.first
(偽,作為哈希沖突桶模數也算)。 平均值是常數(對於無序)/ lg n(對於有序)。
關聯容器的設計幾乎可以找到給定元素的迭代器。 因此,只需使用容器的find
函數。 請注意,它不是固定時間,它將具有容器查找的時間復雜度(有序容器為對數,無序容器為平均常數):
auto iteratorToElement = container.find(element);
如果您需要能夠在恆定時間內執行此操作,則可以改用具有此功能的 Boost.MultiIndex 。
設置有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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.