Bekas Heterogen dalam C
Dalam klasifikasi kontena STL, beberapa keperluan masih tidak dipenuhi, iaitu saiz berubah-ubah dan heterogen (data jenis berbeza) . Adalah munasabah untuk bertanya sama ada C menyediakan sebarang penyelesaian untuk kes penggunaan ini.
Biasanya, bekas C direka bentuk untuk menyimpan objek daripada satu jenis, tetapi anda boleh menggunakan penunjuk atau boost:: any untuk menampung jenis yang berbeza:
Menggunakan Penunjuk:
Anda boleh menyimpan bekas penunjuk kepada jenis asas, membolehkan anda memegang objek yang diperoleh daripada jenis itu:
<code class="cpp">std::vector<MyBaseType*>;</code>
Menggunakan boost::any:
Boost memberikan rangsangan::any, yang membolehkan anda menyimpan objek dari sebarang jenis dengan selamat:
<code class="cpp">using boost::any_cast; typedef std::list<boost::any> many;</code>
Anda kemudian boleh menggunakan any_cast untuk menghantar objek kepada jenis yang diingini.
Menggunakan boost::variant:
Boost::variant ialah satu lagi pilihan yang membolehkan anda menentukan set yang dibenarkan jenis:
<code class="cpp">std::vector<boost::variant<unsigned, std::string>>;</code>
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa boost::any dan boost::variant mempunyai beberapa prestasi dan overhed memori berbanding bekas STL standard.
Atas ialah kandungan terperinci Bolehkah Bekas C Menyimpan Data Pelbagai Jenis?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!