Rumah >pembangunan bahagian belakang >C++ >Bolehkah saya Menyimpan Tatasusunan Terus dalam Vektor C? Mengapa Gunakan `std::array` Sebaliknya?
Apabila bekerja dengan struktur data, adalah penting untuk memahami keserasian dan pengehadan pelbagai jenis. Dalam C , bukan sesuatu yang luar biasa untuk menghadapi situasi di mana menyimpan tatasusunan dalam vektor menimbulkan persoalan tentang penggunaan yang betul.
Isu:
Pertimbangkan senario di mana anda cuba menentukan vektor yang memegang tatasusunan, seperti yang ditunjukkan di bawah:
vector<float[4]> myVector;
Setelah mengubah saiz vektor, anda mungkin menghadapi ralat yang menyatakan, "penukaran daripada 'int' kepada jenis bukan skalar 'float [4]' diminta." Ralat ini menyerlahkan isu asas.
Penyelesaian:
Tatasusunan, tidak seperti jenis data asas lain seperti integer atau beregu, secara semula jadi tidak boleh dibina atau ditugaskan. Ini bermakna ia tidak boleh diletakkan ke dalam bekas seperti vektor. Untuk mengatasi had ini dan menyimpan tatasusunan dalam vektor, anda mesti menggunakan templat kelas tatasusunan.
Pilihan Alternatif: Menggunakan Templat Kelas Tatasusunan
Templat kelas tatasusunan menyediakan penyelesaian kepada masalah ini. Mereka menawarkan fungsi seperti tatasusunan sambil memastikan keserasian dengan bekas. Berikut ialah contoh menggunakan templat std::array:
std::vector<std::array<double, 4>> myVector;
Pengisytiharan ini menggunakan templat kelas std::array dengan betul, membolehkan anda menyimpan tatasusunan empat rangkap dalam vektor. Anda boleh mengubah saiz dan memanipulasi vektor ini mengikut keperluan, tanpa menghadapi ralat yang sama yang dihadapi dengan tatasusunan asas.
Templat Tambahan:
Selain daripada std::array, terdapat templat kelas tatasusunan lain untuk dipilih daripada:
Akhirnya, pilihan templat kelas tatasusunan bergantung pada keperluan khusus anda dan versi C yang anda gunakan.
Atas ialah kandungan terperinci Bolehkah saya Menyimpan Tatasusunan Terus dalam Vektor C? Mengapa Gunakan `std::array` Sebaliknya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!