簡體   English   中英

通過std :: set迭代的復雜性

[英]Complexity of iteration through std::set

我知道迭代整個集合的時間復雜度需要O(n)時間,其中n是集合的大小。 問題是,兩個迭代器之間迭代的復雜性是什么, itBeginitEnd 也許它就像O(itEnd - itBegin + log n) ,但我無法證明。

復雜性將是o(n)(n的小o)而不是O(n),這意味着在最壞的情況下,你將遍歷整個集合。

迭代整個std::set算法復雜度為O(n)。 但是時間消耗大於迭代std::vector因為vector使用單個內存塊。

如果你想迭代2個迭代器itBeginitEnd它也將是O(n1),但是n1將類似於std::distance(itEnd, itBegin) ,在第一種情況下小於n 已經有迭代器就是這種情況。

如果你想在迭代之前按值找到那些位置(你在開始時沒有迭代器) - 這就變成了O(log n) + O(n2) ,實際上是O(log n) 比如說,如果你想從值123迭代到結尾 - 這將是O(log n)找到迭代器到123O(n2)迭代。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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