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

Bolehkah C Menyimpan Data Pelbagai Jenis dalam Satu Bekas?

DDD
DDDasal
2024-11-06 03:41:02327semak imbas

Can C   Store Data of Different Types in a Single Container?

Bekas Heterogen dalam C

Soalan:

Grafik klasifikasi kontena STL menunjukkan bahawa tiada bekas STL yang kedua-dua saiz berubah dan heterogen. Adakah C kekurangan penyelesaian untuk menyimpan data daripada jenis yang berbeza?

Jawapan:

Walaupun bekas C biasanya direka untuk menyimpan objek daripada satu jenis, terdapat cara untuk simpan pelbagai jenis data:

  • Penunjuk: Gunakan bekas penunjuk kepada objek kelas asas biasa, membolehkan anda menyimpan objek daripada jenis terbitan yang berbeza.
  • boost::any: Simpan objek dari sebarang jenis dalam bekas. Ini menggunakan pendekatan pengaturcaraan meta templat untuk mengendalikan jenis yang berbeza dengan selamat.
  • boost::variant: Sama seperti boost:: any, tetapi memerlukan penetapan jenis yang dibenarkan pada masa penyusunan.

Contoh Kod:

<code class="cpp">#include <list>
#include <boost/any.hpp>

using boost::any_cast;
typedef std::list<boost::any> many;

int main() {
    many values;
    append_int(values, 10);
    append_string(values, "Hello");

    if (is_int(values.front())) {
        int number = any_cast<int>(values.front());
        std::cout << number << std::endl;
    }

    return 0;
}</code>

Atas ialah kandungan terperinci Bolehkah C Menyimpan Data Pelbagai Jenis dalam Satu Bekas?. 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