Cách nhanh nhất để tìm hiểu xem vùng chứa unordered_map
có một mục có khóa được chỉ định không?unordered_map: cái nào tìm nhanh hơn() hoặc đếm()?
Trả lời
Chúng sẽ có hiệu suất tương đương. Bạn nên sử dụng thuật toán thể hiện rõ nhất những gì bạn đang cố gắng làm.
Để xây dựng trên đó, thông thường, count()
sẽ được triển khai bằng cách sử dụng find()
. Ví dụ, trong libcxx, count()
được thực hiện như return (find(__k) != end());
Tôi nghĩ rằng Tìm là tùy chọn tốt nhất ở đây, không cần phải tiến xa hơn nữa.
http://www.cplusplus.com/reference/unordered_map/unordered_map/find/
find()
và count()
được áp dụng cho nhiều container trong C++.
Đối với bản đồ, bộ vv tìm sẽ luôn có thời gian thực hiện liên tục, vì nó chỉ tính giá trị băm và trả về trình lặp cho phần tử đầu tiên được tìm thấy (end()
nếu không tìm thấy).
count()
mặt khác, có thời gian thực hiện không đổi O (e), trong đó e là số lần khóa được cung cấp được tìm thấy. Trường hợp xấu nhất là một bộ sưu tập mà tất cả các thành viên đều giống nhau, vì vậy count
có thể có độ phức tạp O (n)
map
hoặc unordered_map
không cho phép trùng lặp, do đó thời gian chạy tiệm cận của chúng sẽ giống nhau.
Lựa chọn phụ thuộc vào ngữ nghĩa trong mã của bạn. Nếu bạn chỉ muốn kiểm tra xem khóa có tồn tại hay không, bạn chỉ có thể sử dụng count
. Nếu bạn muốn kiểm tra xem khóa có tồn tại hay không và sử dụng giá trị của khóa đó, hãy truy cập find
vì bạn sẽ có một trình vòng lặp trỏ đến phần tử đó.
- 1. cái nào nhanh hơn: mã màu hex hoặc tên màu?
- 2. Cái nào nhanh hơn và tại sao?
- 3. Cái nào nhanh hơn và nhẹ hơn - mysqli & PDO
- 4. Cái nào tốt hơn, #fff hoặC#FFF?
- 5. Là số đếm Linq() nhanh hơn hoặc chậm hơn List.Count hoặc Array.Length?
- 6. Regex so sánh thủ công. Cái nào nhanh hơn?
- 7. Đó là nhanh hơn, 'find -exec' hoặc 'tìm | xargs -0 '?
- 8. viết hoặc printf, nhanh hơn?
- 9. Cái nào nhanh hơn trong SQL, Trong khi vòng lặp, Recoredive Stored proc, hoặc Cursor?
- 10. Cái nào có hiệu suất thời gian chạy nhanh hơn: WPF hoặc Winforms?
- 11. Bản đồ/ArrayList: cái nào nhanh hơn để tìm kiếm một phần tử
- 12. Tốc độ nào nhanh hơn, XPath hoặc Regexp?
- 13. khi nào java nhanh hơn C++ (hoặc khi nào JIT nhanh hơn được biên dịch trước)?
- 14. Truy cập pixel và theo dõi đối tượng: Emgu CV hoặc Aforge.Net? cái nào nhanh hơn và dễ dàng hơn?
- 15. IN hoặc OR nhanh hơn?
- 16. Đó là nhanh hơn, equalsIgnoreCase hoặc compareToIgnoreCase
- 17. Nhanh hơn asp.net mvc json hoặc json.net?
- 18. Cái nào tốt hơn?
- 19. Cái gì tốt hơn, ConfigObj hoặc ConfigParser?
- 20. Vòng lặp nào nhanh hơn, trong khi hoặc cho?
- 21. Tại sao bản đồ sẽ nhanh hơn nhiều so với unordered_map?
- 22. nhanh hơn? Bản Tuyên Bố hoặc PreparedStatement
- 23. Apache2: mod_wsgi hoặc mod_python, cái nào tốt hơn?
- 24. TR1 từ Boost hoặc VC10 - Cái nào tốt hơn?
- 25. Tốc độ nào nhanh hơn, EXISTS trước hoặc sau INSERT?
- 26. Còn lại THAM GIA nhanh hơn hoặc Tham gia bên trong nhanh hơn?
- 27. Tốc độ nào nhanh hơn: Union hoặc Concat?
- 28. Cái nào nhanh hơn: "CHỌN * TỪ bảng" hoặc "TỪ x, y, q TỪ bảng" (từ một bảng có 4 trường)
- 29. Đếm và Dung lượng nhanh như thế nào?
- 30. Khởi tạo .. cái nào hiệu quả hơn?
'unordered_map' biết nó có các khóa duy nhất, do đó,' count() 'sẽ dừng trên kết quả khớp đầu tiên (trừ khi triển khai bị hỏng, nhưng bạn nên giả sử nó không phải là) –