Menggunakan Pasangan sebagai Kekunci dalam Peta Tidak Tersusun
Apabila cuba mengisytiharkan unordered_map di mana kunci adalah pasangan (Undi = pasangan Fungsi cincang ini menggabungkan nilai cincang komponen pasangan menggunakan operator XOR. Untuk menggunakannya, ubah suai perisytiharan unordered_map seperti berikut: Pendekatan ini membenarkan penciptaan peta tidak tertib dengan pasangan sebagai kunci dengan menyediakan fungsi cincang yang sesuai. Walau bagaimanapun, perlu diingat bahawa pelaksanaan ringkas ini mungkin tidak mempamerkan sifat cincang yang optimum dan pertimbangkan untuk meneroka fungsi hash_combine Boost atau set hash_value untuk hasil yang dipertingkatkan. Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Pasangan sebagai Kunci dalam Peta Tidak Tertib dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!Implicit instantiation of undefined template 'std::__1::hash, std::__1::basic_string > >'</p>
<p>Ini ralat timbul kerana unordered_map bergantung pada fungsi cincang yang disesuaikan dengan jenis kuncinya. Memandangkan fungsi cincang lalai tidak boleh digunakan untuk berpasangan, anda mesti menyediakan fungsi cincang tersuai.</p>
<p>Sebagai contoh, pertimbangkan fungsi cincang tersuai berikut (pair_hash):</p>
<pre class="brush:php;toolbar:false">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;
}
};
using Vote = std::pair<std::string, std::string>;
using Unordered_map = std::unordered_map<Vote, int, pair_hash>;