Một cuộc nói chuyện gần đây về unordered_mapC ++ khiến tôi nhận ra rằng tôi nên sử dụng unordered_mapcho hầu hết các trường hợp tôi đã sử dụng maptrước đây, vì hiệu quả của việc tra cứu ( khấu hao O (1) so với O (log n) ). Hầu hết thời gian tôi sử dụng bản đồ, tôi sử dụng inthoặc std::stringlà loại khóa; do đó, tôi không gặp vấn đề gì với định nghĩa của hàm băm. Càng nghĩ về nó, tôi càng nhận ra rằng tôi không thể tìm thấy bất kỳ lý do nào của việc sử dụng std::mapmột std::unordered_maptrong các trường hợp khóa với các loại đơn giản - tôi đã xem qua các giao diện và không tìm thấy bất kỳ sự khác biệt đáng kể sẽ ảnh hưởng đến mã của tôi.
Do đó câu hỏi: liệu có bất kỳ lý do thực sự để sử dụng std::maptrên std::unordered_maptrong trường hợp của các loại đơn giản như intvà std::string?
Tôi đang hỏi từ quan điểm lập trình nghiêm ngặt - Tôi biết rằng nó không được coi là hoàn toàn tiêu chuẩn và nó có thể gây ra vấn đề với việc chuyển.
Ngoài ra, tôi hy vọng rằng một trong những câu trả lời đúng có thể là "hiệu quả hơn đối với các tập dữ liệu nhỏ hơn" vì chi phí nhỏ hơn (có đúng không?) - do đó tôi muốn hạn chế câu hỏi trong trường hợp số lượng các khóa không tầm thường (> 1 024).
Chỉnh sửa: duh, tôi quên mất điều hiển nhiên (cảm ơn GMan!) - vâng, bản đồ được đặt hàng tất nhiên - tôi biết điều đó, và đang tìm kiếm những lý do khác.

