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!