Mengakses Bekas Dasar dalam Penyesuai Bekas STL
Dalam C , penyesuai kontena STL melapisi fungsi tambahan ke atas bekas sedia ada. Walau bagaimanapun, mengakses bekas asas dalam penyesuai ini mungkin diingini untuk operasi tertentu.
Kaedah untuk Tindanan dan Gilir
Untuk tindanan dan baris gilir, terdapat bukan standard kaedah yang dipanggil _Get_container() yang boleh mendapatkan semula bekas asas. Walau bagaimanapun, kaedah ini bukan sebahagian daripada standard dan ketersediaannya mungkin berbeza-beza mengikut pelaksanaan.
Kaedah untuk Priority_queue
Malangnya, tiada kaedah standard untuk mengakses asas bekas baris gilir keutamaan.
Pendekatan Alternatif
Satu pendekatan alternatif untuk ketiga-tiga penyesuai kontena ialah menggunakan kelas terbitan persendirian dengan akses kepada bekas asas. Contohnya, untuk priority_queue:
<code class="cpp">template <class T, class S, class C> S& Container(priority_queue<T, S, C>& q) { struct HackedQueue : private priority_queue<T, S, C> { static S& Container(priority_queue<T, S, C>& q) { return q.*&HackedQueue::c; } }; return HackedQueue::Container(q); }</code>
Pendekatan ini membenarkan akses kepada bekas asas melalui fungsi Container().
Dokumentasi Perpustakaan Standard
Dokumentasi rasmi untuk perpustakaan standard C boleh didapati di lokasi berikut:
Penjelasan
Matlamat pengguna adalah untuk mencetak kandungan bekas satu nilai menggunakan fungsi generik. Ini boleh dicapai dengan mengakses bekas asas, yang mengandungi data sebenar.
Atas ialah kandungan terperinci Bagaimana untuk Mengakses Bekas Dasar dalam Penyesuai Bekas STL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!