Rumah > pembangunan bahagian belakang > C++ > Bolehkah saya Menggunakan Pasangan sebagai Kunci dalam Peta Tidak Tersusun C, dan Bagaimana?

Bolehkah saya Menggunakan Pasangan sebagai Kunci dalam Peta Tidak Tersusun C, dan Bagaimana?

Linda Hamilton
Lepaskan: 2024-12-16 14:11:10
asal
128 orang telah melayarinya

Can I Use Pairs as Keys in C   Unordered Maps, and How?

Bolehkah saya menggunakan Pasangan sebagai Kekunci dalam Peta Tidak Tertib?

Dalam C , anda boleh menghadapi ralat penyusunan apabila menggunakan unordered_map dengan pasangan sebagai kuncinya. Isu timbul daripada menggunakan jenis tersuai sebagai kunci, tanpa menyediakan fungsi cincang yang sesuai untuknya.

Memahami Ralat

Ralat yang anda hadapi adalah kerana unordered_map bergantung pada mekanisme pencincangan untuk mengesan pasangan nilai kunci dengan cekap. Walau bagaimanapun, ia tidak mempunyai fungsi cincang lalai untuk jenis kompleks seperti pasangan. Mesej ralat menunjukkan bahawa pengkompil tidak boleh secara tersirat membuat seketika fungsi cincang yang tidak ditentukan untuk jenis kunci pasangan anda.

Penyelesaian: Menyediakan Fungsi Cincang

Untuk menyelesaikan isu ini, anda perlu menentukan fungsi cincang yang mengira nilai cincang unik untuk jenis pasangan Undi anda. Fungsi ini harus menerima pasangan sebagai argumen dan mengeluarkan nilai cincang.

Berikut ialah contoh pelaksanaan fungsi cincang:

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;
    }
};
Salin selepas log masuk

Dengan fungsi cincang ini, anda boleh mengubah suai kod anda untuk mencipta unordered_map yang menggunakan pasangan sebagai kunci:

using Vote = std::pair<std::string, std::string>;
using Unordered_map = std::unordered_map<Vote, int, pair_hash>;
Salin selepas log masuk

Kini, anda boleh menggunakan unordered_map ini seperti yang dimaksudkan, mengelakkan ralat penyusunan.

Atas ialah kandungan terperinci Bolehkah saya Menggunakan Pasangan sebagai Kunci dalam Peta Tidak Tersusun C, dan Bagaimana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan