การพูดคุยเมื่อไม่นานมานี้unordered_map
ใน C ++ ทำให้ฉันรู้ว่าฉันควรใช้unordered_map
กับกรณีส่วนใหญ่ที่ฉันเคยใช้มาmap
ก่อนเนื่องจากประสิทธิภาพของการค้นหา ( ตัดจำหน่าย O (1)เทียบกับO (log n ) เวลาส่วนใหญ่ที่ฉันใช้แผนที่ฉันใช้อย่างใดอย่างหนึ่งint
หรือstd::string
เป็นชนิดคีย์ ดังนั้นฉันไม่มีปัญหากับนิยามของฟังก์ชันแฮช ยิ่งฉันคิดถึงมันมากเท่าไรฉันก็ยิ่งรู้ว่าฉันไม่สามารถหาเหตุผลในการใช้ปุ่มstd::map
a std::unordered_map
ในกรณีของปุ่มที่มีประเภทง่าย ๆ ได้ - ฉันดูที่อินเตอร์เฟสและไม่พบสิ่งใดเลย ความแตกต่างที่สำคัญที่จะส่งผลกระทบต่อรหัสของฉัน
ดังนั้นคำถาม: มีเหตุผลที่แท้จริงที่จะใช้std::map
มากกว่าstd::unordered_map
ในกรณีของประเภทง่ายเช่นint
และstd::string
?
ฉันขอจากมุมมองการเขียนโปรแกรมอย่างเคร่งครัด - ฉันรู้ว่ามันไม่ได้พิจารณาอย่างเต็มที่มาตรฐานและอาจก่อให้เกิดปัญหากับการย้าย
นอกจากนี้ฉันคาดหวังว่าหนึ่งในคำตอบที่ถูกต้องอาจเป็น"มันมีประสิทธิภาพมากกว่าสำหรับชุดข้อมูลขนาดเล็ก"เนื่องจากมีค่าใช้จ่ายน้อย (นั่นเป็นเรื่องจริงหรือ?) - ดังนั้นฉันจึงต้องการ จำกัด คำถามให้กับกรณีที่จำนวน คีย์นั้นไม่สำคัญ (> 1 024)
แก้ไข: duh ฉันลืมชัดเจน (ขอบคุณ GMan!) - ใช่แผนที่ได้รับคำสั่งแน่นอน - ฉันรู้แล้วและกำลังมองหาเหตุผลอื่น