Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menggunakan Kekunci `char*` dengan betul dalam C `std::map`?

Bagaimanakah Saya Boleh Menggunakan Kekunci `char*` dengan betul dalam C `std::map`?

Susan Sarandon
Susan Sarandonasal
2024-12-06 20:36:12783semak imbas

How Can I Correctly Use `char*` Keys in a C   `std::map`?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn