Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menggunakan Pasangan sebagai Kunci dalam Peta Tidak Tersusun?

Bagaimana untuk Menggunakan Pasangan sebagai Kunci dalam Peta Tidak Tersusun?

Mary-Kate Olsen
Lepaskan: 2024-12-11 06:55:09
asal
233 orang telah melayarinya

How to Use Pairs as Keys in Unordered Maps?

Memahami Pasangan sebagai Kunci dalam Peta Tidak Tersusun

Apabila cuba mencipta peta tidak tersusun dengan pasangan sebagai kunci, pengguna mungkin menghadapi kompilasi kesilapan. Ralat ini timbul daripada kekurangan fungsi cincang yang sesuai untuk jenis kunci tersuai, pasangan.

Untuk menyelesaikan isu ini, std::unordered_map memerlukan pengguna menyediakan fungsi cincang yang direka khusus untuk jenis kunci. Fungsi ini bertanggungjawab untuk memetakan kunci kepada pengecam unik, yang penting untuk mendapatkan semula yang cepat dan cekap.

Melaksanakan Fungsi Hash Tersuai

Sebuah yang mudah, walaupun tidak fungsi cincang optimum untuk sepasang jenis std::hash-able boleh dilaksanakan sebagai berikut:

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; // Combine the hashes using a simple XOR
    }
};
Salin selepas log masuk

Menggunakan Fungsi Cincang Tersuai

Setelah fungsi cincang ditakrifkan, ia boleh digunakan dengan std::unordered_map untuk menyelesaikan ralat penyusunan:

#include <unordered_map>
#include <functional>
#include <string>
#include <utility>

using Vote = std::pair<std::string, std::string>;
using Unordered_map = std::unordered_map<Vote, int, pair_hash>;

int main() {
    Unordered_map um;
}
Salin selepas log masuk

Alternatif Penyelesaian

Untuk sokongan yang lebih luas dan prestasi yang lebih baik, pertimbangkan untuk menggunakan perpustakaan seperti Boost. Boost menyediakan:

  • boost::hash_combine: Kaedah yang lebih mantap untuk menggabungkan cincang
  • fungsi set_hash_value: Menyediakan fungsi cincang untuk jenis standard seperti std::pair

Dengan memanfaatkan pilihan ini, pengguna boleh memastikan pencincangan yang boleh dipercayai untuk jenis kunci tersuai mereka dalam std::unordered_map, membolehkan prestasi kod yang cekap dan optimum.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Pasangan sebagai Kunci dalam Peta Tidak Tersusun?. 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