Bagaimanakah Saya Boleh Mencipta Bekas Heterogen dalam C?

Mary-Kate Olsen
Lepaskan: 2024-11-05 10:54:02
asal
307 orang telah melayarinya

How Can I Create Heterogeneous Containers in C  ?

Bekas Heterogen dalam C

Grafik yang anda rujuk menggambarkan pelbagai bekas STL berdasarkan ciri seperti saiz tetap/boleh ubah, jenis data, pengisihan , dan jenis akses. Walau bagaimanapun, ia tidak mempunyai bekas yang menyokong saiz pembolehubah dan heterogeniti secara serentak (menerima jenis data yang berbeza).

Dalam C , kebanyakan bekas direka bentuk untuk menyimpan objek daripada jenis tertentu menggunakan templat. Walaupun penunjuk boleh membenarkan penyimpanan heterogen, ia menimbulkan had. Selain itu, bekas lompang* kurang selamat jenis.

Untuk bekas heterogen sebenar yang boleh menyimpan jenis yang tidak berkaitan, pertimbangkan pilihan berikut:

  • Boost.Any :

    Boost.Any menyediakan cara umum untuk menyimpan sebarang jenis, membolehkan anda mencipta bekas yang mengandungi campuran integer, rentetan dan objek yang lebih kompleks.

    <code class="cpp">using boost::any;
    std::list<boost::any> values;
    values.push_back(42);
    values.push_back("Hello, world!");</code>
    Salin selepas log masuk
  • Boost.Variant:

    Boost.Variant adalah serupa dengan Boost.Any tetapi memerlukan menyatakan jenis yang dibenarkan pada masa penyusunan. Ini menguatkuasakan keselamatan jenis sambil masih mendayakan storan heterogen.

    <code class="cpp">using boost::variant;
    std::vector<boost::variant<int, std::string>> vec;
    vec.push_back(44);
    vec.push_back("C++");</code>
    Salin selepas log masuk

Perpustakaan ini membenarkan penciptaan bekas yang boleh menyimpan dan mengakses data pelbagai jenis secara fleksibel. Walaupun tidak disediakan secara langsung oleh STL, alternatif ini menawarkan penyelesaian untuk penyimpanan data heterogen dalam C .

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Bekas Heterogen dalam C?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!