Ralat Penyusunan Peta Tidak Tersusun dengan Kekunci Pasangan
Apabila cuba mencipta peta tidak tersusun di mana kuncinya berpasangan, anda mungkin menghadapi ralat berikut :
Implicit instantiation of undefined template 'std::__1::hash, std::__1::basic_string >>'
Ralat ini berlaku kerana peta tidak tersusun memerlukan fungsi cincang untuk ditakrifkan untuk jenis utama mereka. Manakala hash
Penyelesaian: Menyediakan Fungsi Cincang Tersuai
Untuk menyelesaikan isu ini, anda perlu menentukan fungsi cincang tersuai untuk jenis kunci pasangan anda. Berikut ialah contoh pelaksanaan:
struct pair_hash { template<class T1, class T2> size_t operator()(const pair<T1, T2>& p) const { auto h1 = hash<T1>()(p.first); auto h2 = hash<T2>()(p.second); return h1 ^ h2; } };
Fungsi cincang ini menggabungkan nilai cincang bagi komponen individu pasangan menggunakan XOR bitwise (^).
Menggunakan Fungsi Cincang Tersuai
Setelah anda menentukan fungsi cincang, anda boleh menggunakannya untuk membuat peta tidak tertib dengan kekunci pasangan seperti berikut:
using Vote = pair<string, string>; using Unordered_map = unordered_map<Vote, int, pair_hash>; Unordered_map um;
Dengan pengubahsuaian ini, ralat kompilasi tidak akan berlaku lagi dan anda akan dapat menggunakan peta tidak tersusun seperti yang dijangkakan.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat Penyusunan Peta Tidak Tertib dengan Kekunci Pasangan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!