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

Bolehkah C Menyimpan Data Pelbagai Jenis dalam Satu Bekas?

DDD
Lepaskan: 2024-11-06 03:41:02
asal
375 orang telah melayarinya

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

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 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan