Rumah > pembangunan bahagian belakang > C++ > Bolehkah Bekas C Menyimpan Data Pelbagai Jenis?

Bolehkah Bekas C Menyimpan Data Pelbagai Jenis?

Mary-Kate Olsen
Lepaskan: 2024-11-05 06:34:01
asal
968 orang telah melayarinya

Can C   Containers Store Data of Different Types?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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