Memahami Pasangan sebagai Kunci dalam Peta Tidak Tersusun
Apabila cuba mencipta peta tidak tersusun dengan pasangan sebagai kunci, pengguna mungkin menghadapi kompilasi kesilapan. Ralat ini timbul daripada kekurangan fungsi cincang yang sesuai untuk jenis kunci tersuai, pasangan.
Untuk menyelesaikan isu ini, std::unordered_map memerlukan pengguna menyediakan fungsi cincang yang direka khusus untuk jenis kunci. Fungsi ini bertanggungjawab untuk memetakan kunci kepada pengecam unik, yang penting untuk mendapatkan semula yang cepat dan cekap.
Melaksanakan Fungsi Hash Tersuai
Sebuah yang mudah, walaupun tidak fungsi cincang optimum untuk sepasang jenis std::hash-able boleh dilaksanakan sebagai berikut:
struct pair_hash { template <class T1, class T2> std::size_t operator()(const std::pair<T1, T2>& p) const { auto h1 = std::hash<T1>()(p.first); auto h2 = std::hash<T2>()(p.second); return h1 ^ h2; // Combine the hashes using a simple XOR } };
Menggunakan Fungsi Cincang Tersuai
Setelah fungsi cincang ditakrifkan, ia boleh digunakan dengan std::unordered_map untuk menyelesaikan ralat penyusunan:
#include <unordered_map> #include <functional> #include <string> #include <utility> using Vote = std::pair<std::string, std::string>; using Unordered_map = std::unordered_map<Vote, int, pair_hash>; int main() { Unordered_map um; }
Alternatif Penyelesaian
Untuk sokongan yang lebih luas dan prestasi yang lebih baik, pertimbangkan untuk menggunakan perpustakaan seperti Boost. Boost menyediakan:
Dengan memanfaatkan pilihan ini, pengguna boleh memastikan pencincangan yang boleh dipercayai untuk jenis kunci tersuai mereka dalam std::unordered_map, membolehkan prestasi kod yang cekap dan optimum.
Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Pasangan sebagai Kunci dalam Peta Tidak Tersusun?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!