迭代通過std::set
/std::map
的時間複雜度是多少?我相信它在集合/地圖的大小上是線性的,但不太確定。它在語言標準中有規定嗎?迭代std :: set/std :: map的時間複雜度是多少?
14
A
回答
30
在draft C++11 standard N3337的答案可以在§找到24.2.1段8:
所有迭代器的類別只需要那些 變現爲一個功能按固定時間給定類別(攤銷)。
由於上一個迭代每個操作必須是恆定的時間,通過n
元件迭代必須O(n)
。
+0
如果使用父指針將映射/集合實現爲二叉樹,則遍歷所有元素將至多訪問每個樹節點3次。如果實現是一個帶有父指針的b樹,則每個節點最多訪問2 * n + 1次,n是節點中元素的數量。在這兩種情況下,這意味着每個迭代步驟的恆定平均時間複雜度。我不知道有任何其他符合實現地圖/設置的方法。 – WaltK 2017-04-08 14:21:38
7
我相信它在集合/地圖的大小上是線性的,但是肯定不是那麼的 。
這是正確的。通過整個集合或地圖迭代是O(N)
相關問題
- 1. std :: map的時間複雜度是多少:: map
- 2. C++中std :: next_permutation()函數的時間複雜度是多少?
- 3. Collection.toArray()的時間複雜度是多少?
- 4. 我的代碼中的時間複雜度是多少
- 5. 下面的僞代碼的時間複雜度是多少?
- 6. 我的代碼的時間複雜度是多少?
- 7. 以下代碼的時間複雜度是多少?
- 8. 代碼的時間複雜度是多少?
- 9. 這段代碼的時間複雜度是多少(來自leetcode)?
- 10. 以下代碼的時間複雜度是多少?
- 11. 以下代碼的時間複雜度是多少?
- 12. 這段代碼的時間複雜度是多少?爲什麼?
- 13. 這段代碼片段的時間複雜度是多少?
- 14. 以下代碼片段的時間複雜度是多少?
- 15. 這個算法(代碼)的時間複雜度是多少?
- 16. 這個僞代碼的時間複雜度是多少?
- 17. 這個循環的時間複雜度是多少?
- 18. 減少時間複雜度
- 19. 這個程序的時間複雜度是多少?
- 20. unordered_set <int> :: iterator it + n的時間複雜度是多少?
- 21. 分時排序算法的時間複雜度是多少?
- 22. 通配符匹配算法的時間複雜度是多少?
- 23. 在線性時間迭代Array時HashMap的空間複雜度
- 24. 以下循環的時間複雜度是多少
- 25. Python中collections.Counter()的時間複雜度是多少?
- 26. 這個算法的時間複雜度是多少?
- 27. heapifyUp()方法的時間複雜度是多少?
- 28. 下面的遞歸函數的時間複雜度是多少
- 29. NavigableMap的floorEntry()方法的時間複雜度是多少?
- 30. AngularJS的髒檢查算法的時間複雜度是多少?
整個容器的迭代將始終是'O(n)'_at least_(我認爲真正愚蠢的實現可能會使它變得更糟糕) – Chad 2012-08-02 14:43:39
當你說「遍歷」時,你究竟是什麼意思?你在使用標準迭代器編寫一個while/for循環嗎?你在使用其中一種標準算法嗎? – 2012-08-02 14:51:14