Rumah >pembangunan bahagian belakang >C++ >Mengapa Saya Tidak Boleh Menggunakan `std::pair` sebagai Kunci dalam `std::unordered_map` dan Bagaimana Saya Membetulkannya?
Mengapa saya tidak boleh menyusun unordered_map dengan pasangan sebagai kunci?
Isu yang dihadapi di sini ialah ketiadaan fungsi cincang yang sesuai untuk jenis kunci. Untuk menyelesaikan masalah ini, sediakan fungsi cincang tersuai untuk kunci pasangan. Berikut ialah contoh:
#include <unordered_map> #include <functional> #include <string> #include <utility> 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; // Simple example, for better results use boost.hash_combine } }; using Vote = std::pair<std::string, std::string>; using Unordered_map = std::unordered_map<Vote, int, pair_hash>;
Dengan fungsi cincang tersuai ini, anda kini boleh mencipta unordered_map
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan `std::pair` sebagai Kunci dalam `std::unordered_map` dan Bagaimana Saya Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!