Menyimpan Objek Heterogen dalam Bekas C
Bekas C biasanya memerlukan elemen homogen, bermakna ia hanya boleh memegang objek daripada satu jenis. Walau bagaimanapun, terdapat situasi di mana anda mungkin memerlukan bekas yang boleh menampung campuran jenis data. Artikel ini meneroka cara untuk mencapai ini menggunakan rangsangan::sebarang perpustakaan dan pendekatan tersuai.
Menggunakan rangsangan::sebarang
dorongan::sebarang ialah kelas templat yang boleh memuatkan mana-mana jenis C. Dengan menyimpan contoh rangsangan::mana-mana dalam bekas, anda boleh mempunyai koleksi objek yang heterogen. Pendekatan ini disyorkan kerana keteguhannya dan pengendalian kes tepi.
Pelaksanaan Tersuai
Jika anda lebih suka pendekatan yang lebih manual, anda boleh mencipta struktur tersuai atau kesatuan yang menggabungkan ahli daripada semua jenis yang dijangka bersama-sama dengan penunjuk untuk menentukan jenis aktif.
Pendekatan Struktur:
<code class="cpp">struct HeterogeneousContainer { int i; std::string s; double d; int type; // 0 for int, 1 for string, 2 for double };</code>
Pendekatan Kesatuan (gunakan dengan berhati-hati) :
<code class="cpp">union HeterogeneousContainer { int i; std::string s; double d; };</code>
Walau bagaimanapun, pendekatan ini mempunyai had dan potensi perangkap, seperti:
Kesimpulan
Apabila menghadapi keperluan untuk menyimpan objek heterogen dalam bekas C, pertimbangkan untuk menggunakan rangsangan:: mana-mana perpustakaan untuk keselamatan dan keberkesanannya. Jika mahu, pelaksanaan tersuai boleh dibuat menggunakan struktur atau kesatuan, tetapi ambil perhatian terhadap hadnya.
Atas ialah kandungan terperinci Bagaimana untuk Menyimpan Objek Heterogen dalam Bekas C: boost:: any atau Pelaksanaan Tersuai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!