Memahami std::map dengan char* Keys
Dalam pengaturcaraan C, menggunakan char sebagai kunci dalam std:: peta boleh membawa kepada isu yang tidak dijangka. Artikel ini menyelidiki cabaran yang berkaitan dengan menggunakan kekunci char dan meneroka penyelesaian untuk mengatasi kesukaran ini.
Sampel kod yang disediakan dalam soalan menghadapi isu kerana std::map membandingkan penunjuk mentah dan bukannya rentetan yang ditamatkan nol yang mereka rujuk. Untuk menyelesaikan isu ini, adalah perlu untuk memasukkan functor perbandingan ke dalam peta.
Pertimbangkan coretan kod berikut sebagai penyelesaian:
struct cmp_str { bool operator()(char const *a, char const *b) const { return std::strcmp(a, b) < 0; } }; map<char *, int, cmp_str> g_PlayerNames;
Dengan mentakrifkan dan menggunakan functor perbandingan ini, std::map dilengkapi dengan keupayaan untuk membandingkan rentetan yang ditamatkan nol yang ditunjukkan oleh kekunci char*, memastikan betul berfungsi dan menyelesaikan isu yang dihadapi dalam kod yang disediakan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Kekunci `char*` dengan betul dalam C `std::map`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!