找出unordered_map
容器是否有指定密鑰的物品的最快方法是什麼?unordered_map:哪一個更快find()或count()?
14
A
回答
13
他們將有大約相同的性能。你應該使用最能表達你想要做的事情的算法。
詳細說明一下,一般count()
將使用find()
執行。例如,在libcxx,count()
被實現爲return (find(__k) != end());
1
我認爲Find是這裏最好的選擇,不需要再進一步了。
http://www.cplusplus.com/reference/unordered_map/unordered_map/find/
1
find()
和count()
在C是適用於許多容器++。
對於映射,集合等發現將始終有恆定的執行時間,因爲它只是計算散列,並返回一個迭代器找到的第一個元素(end()
如果未找到)。
count()
另一方面,具有恆定的執行時間O(e),其中e是提供的密鑰被找到的次數。最壞的情況是,所有的成員都是相同的集合,所以count
可以有一個複雜度爲O(n)的
map
或unordered_map
不允許重複,因此,他們的漸近運行時間是相同的。
選擇取決於代碼中的語義。如果你只想檢查一個密鑰是否存在,你可以使用count
。如果你想檢查一個鍵是否存在,並使用它的值,那麼去find
,因爲你已經有一個迭代器指向那個元素。
相關問題
- 1. 查找('first'),Find('count')或Field('id')...哪個更快?
- 2. SQL&PHP - 哪個更快mysql_num_rows()或'select count()'?
- 3. 哪個最快? find()或標準
- 4. MySQL中的COUNT(*)和myql_num_rows:哪個更快?
- 5. Excel VBA中的哪個更快:InStr或Find?
- 6. Find,Single,First中哪一個最快?
- 7. 哪個更快:COUNT(DISTINCT列)與COUNT(*)... GROUP BY列
- 8. 哪一個更快,C#或Vb.net?
- 9. 哪一個更快,getimeofday或clock_gettime?
- 10. 哪一個更快:Math.abs(value)或value * -1?
- 11. numpy.max或max?哪一個更快?
- 12. 哪個更快,get()或merge()?
- 13. 哪個更快? NSXMLParser或KissXML
- 14. 哪個更快:document.location.pathname或myOwnObj.pathname?
- 15. 哪個更快,XPath或Regexp?
- 16. 哪個更快RegisterStartupScript或RegisterClientScriptBlock?
- 17. 哪個更快,GDI +或libpng?
- 18. write或printf,哪個更快?
- 19. 哪個更快? Statement或PreparedStatement
- 20. 哪個更快 - WebSockets或Ajax?
- 21. MySQL:COUNT(*)或COUNT(IF())哪個更好?
- 22. C++ unordered_map find()或insert()上的SIGSEGV
- 23. COUNT(fld)比COUNT(*)更快嗎?
- 24. 哪個更快?插入或更新?
- 25. 更新或刪除哪個更快?
- 26. 在django中,是否聚合(Count())比.count()更快或更好?
- 27. 哪一個是更快
- 28. loadHTML&loadHTMLFile,哪一個更快?
- 29. 哪個更快?
- 30. 哪個更快?
'unordered_map'知道它有唯一的鍵,所以'count()'將在第一次匹配時停止(除非實現被破壞,但你應該認爲它不是) –