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