簡體   English   中英

C ++ STL關聯容器:從元素獲取迭代器?

[英]C++ STL associative containers: Get iterator from element?

要求提供向量 但是sets&Co也有可能嗎?

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM