Pembicaraan baru-baru ini unordered_map
di C ++ membuat saya sadar bahwa saya harus menggunakan unordered_map
untuk sebagian besar kasus di mana saya gunakan map
sebelumnya, karena efisiensi pencarian ( diamortisasi O (1) vs O (log n) ). Sering kali saya menggunakan peta, saya menggunakan salah satu int
atau std::string
sebagai jenis kunci; karenanya, saya tidak punya masalah dengan definisi fungsi hash. Semakin saya memikirkannya, semakin saya sadari bahwa saya tidak dapat menemukan alasan untuk menggunakan std::map
lebih std::unordered_map
dalam kasus kunci dengan tipe sederhana - Saya melihat antarmuka, dan tidak menemukan apa pun. perbedaan signifikan yang akan memengaruhi kode saya.
Oleh karena itu pertanyaan: apakah ada alasan untuk menggunakan std::map
lebih std::unordered_map
dalam kasus jenis sederhana seperti int
dan std::string
?
Saya meminta dari sudut pandang pemrograman ketat - Saya tahu itu tidak sepenuhnya dianggap standar, dan itu dapat menimbulkan masalah dengan porting.
Juga, saya berharap bahwa salah satu jawaban yang benar mungkin "itu lebih efisien untuk set data yang lebih kecil" karena overhead yang lebih kecil (apakah itu benar?) - maka saya ingin membatasi pertanyaan pada kasus di mana jumlah kunci tidak mudah (> 1 024).
Sunting: ya, saya lupa yang sudah jelas (terima kasih GMan!) - ya, peta dipesan tentu saja - Saya tahu itu, dan saya mencari alasan lain.