Pelaksanaan std::unordered_map
Dengan analisis piawaian C, menjadi jelas bahawa pelaksanaan std::unordered_map mesti menggunakan kaedah yang dikenali sebagai pencincangan terbuka, juga dikenali sebagai rantaian berasingan. Kaedah ini terdiri daripada tatasusunan baldi, setiap satu memegang kepala senarai terpaut, yang membolehkan lelaran yang cekap tanpa memintas baldi kosong.
Pilihan pencincangan terbuka dibuat secara sengaja untuk memenuhi keperluan prestasi khusus yang digariskan dalam C standard. Pertama, faktor beban maksimum lalai ditetapkan kepada 1.0, yang bermaksud bahawa jadual akan mengubah saiz apabila saiz akan melebihi kiraan baldi dengan faktor 1.0. Kedua, jadual dijamin tidak akan dirombak semula melainkan ia dibesarkan melebihi faktor beban tersebut. Keperluan ini menjadikan pencincangan terbuka perlu kerana pencincangan tertutup menjadi tidak praktikal apabila faktor beban menghampiri 1 disebabkan oleh perlanggaran yang berlebihan.
Walaupun sesetengah pihak berpendapat bahawa pencincangan terbuka bukanlah kaedah yang paling berkesan untuk semua kes penggunaan, ia kekal sebagai pilihan yang munasabah untuk kegunaan umum kerana pengendalian perlanggaran yang boleh dipercayai, kebolehsuaian kepada jenis kunci/nilai pelbagai saiz, dan kecekapan keseluruhan dalam mengendalikan jumlah sisipan dan pemadaman tanpa penurunan prestasi.
Oleh itu, std::unordered_map memanfaatkan pencincangan terbuka untuk memenuhi keperluan prestasi yang ditentukan dan kekal sebagai pilihan yang mantap untuk kebanyakan aplikasi kerana kepelbagaian dan kecekapannya.
Atas ialah kandungan terperinci Mengapakah `std::unordered_map` Menggunakan Open Hashing?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!