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
Mary-Kate Olsenasal
2024-12-11 06:55:09271semak imbas

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
    }
};

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;
}

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!

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