Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh menyimpan jenis data yang berbeza dalam satu bekas C?

Bagaimanakah saya boleh menyimpan jenis data yang berbeza dalam satu bekas C?

Linda Hamilton
Linda Hamiltonasal
2024-10-26 08:55:29248semak imbas

How can I store different data types in a single C   container?

Cara Menyimpan Jenis Data Berbeza dalam Bekas C Tunggal

Dalam C , bekas seperti vektor dan peta lazimnya menyimpan objek tunggal jenis data. Walau bagaimanapun, terdapat senario di mana anda mungkin mahu menyimpan objek berbilang jenis dalam bekas yang sama.

Untuk menangani cabaran ini, pertimbangkan untuk menggunakan Boost.Any. Boost.Any ialah kelas templat yang boleh mewakili sebarang jenis data. Anda boleh menyimpan contoh Boost.Any dalam bekas, yang membolehkan anda memegang objek daripada jenis yang berbeza dalam koleksi yang sama.

Berikut ialah contoh cara anda boleh menggunakan Boost.Any:

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

int main() {
  std::vector<boost::any> myContainer;

  int x = 5;
  std::string y = "Hello";
  double z = 3.14;

  // Add objects of different types to the container
  myContainer.push_back(boost::any(x));
  myContainer.push_back(boost::any(y));
  myContainer.push_back(boost::any(z));

  // Retrieve objects from the container and cast them to their original types
  int recoveredX = boost::any_cast<int>(myContainer[0]);
  std::string recoveredY = boost::any_cast<std::string>(myContainer[1]);
  double recoveredZ = boost::any_cast<double>(myContainer[2]);

  // Use the recovered objects
  std::cout << recoveredX << std::endl;
  std::cout << recoveredY << std::endl;
  std::cout << recoveredZ << std::endl;

  return 0;
}</code>

Pilihan lain ialah mencipta Kesatuan atau Struct tersuai. Kesatuan membolehkan anda menyimpan jenis data yang berbeza dalam lokasi memori yang sama, manakala struct boleh memuatkan berbilang ahli data daripada jenis yang berbeza. Walau bagaimanapun, kesatuan boleh mempunyai gelagat yang tidak ditentukan jika ahli yang salah diakses dan struct boleh menjadi tidak cekap jika hanya seorang ahli digunakan secara aktif.

Akhirnya, pendekatan terbaik bergantung pada keperluan dan kekangan khusus permohonan anda. Pertimbangkan kebaikan dan keburukan setiap pilihan untuk menentukan penyelesaian yang paling sesuai.

Atas ialah kandungan terperinci Bagaimanakah saya boleh menyimpan jenis data yang berbeza dalam satu bekas C?. 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