Pengenalan
Mencipta tatasusunan dua dimensi dinamik yang boleh disesuaikan berdasarkan input pengguna menimbulkan cabaran dalam pengaturcaraan C. Walaupun tatasusunan biasanya mempunyai saiz tetap pada pengisytiharan, tugas khusus ini memerlukan fleksibiliti dalam penentuan saiz. Mari kita terokai pendekatan yang berbeza untuk memperuntukkan dan memanipulasi tatasusunan sedemikian secara dinamik.
Pendekatan Vektor Vektor
Vektor vektor (vektor
int n; cin >> n; vector<vector<int>> matrix(n, vector<int>(n));
Kelas Matriks Tersuai
Pilihan lain ialah melaksanakan matriks tersuai kelas yang merangkumi fungsi mengurus tatasusunan dua dimensi secara dinamik. Pendekatan ini menawarkan lebih kawalan ke atas struktur data dan membolehkan pengurusan memori yang cekap.
template <class T> class Matrix { int columns_; vector<T> data; public: Matrix(int columns, int rows) : columns_(columns), data(columns * rows) {} T& operator()(int column, int row) { return data[row * columns_ + column]; } };
Beban Berbilang Operator[]
Ia juga mungkin untuk melaksanakan dinamik tatasusunan dua dimensi menggunakan lebihan beban operator[]. Pendekatan ini memanfaatkan proksi untuk mengakses data secara tidak langsung, menawarkan sintaks yang serupa dengan akses tatasusunan tradisional.
template<class T, int size> class Matrix3 { T data[size][size][size]; class Proxy { Matrix3& m_; int index1_, index2_; }; class Proxy2 { Matrix3& m_; int index_; }; public: Proxy2 operator[](int index) { return Proxy2(*this, index); } Proxy operator[](int index1, int index2) { return Proxy(*this, index1, index2); } };
Kesimpulan
Setiap pendekatan menawarkan pelbagai tahap fleksibiliti, kecekapan , dan kemudahan pelaksanaan. Pendekatan vektor bagi vektor adalah mudah tetapi mungkin mempunyai implikasi prestasi disebabkan oleh pelbagai peringkat arah. Kelas matriks tersuai memberikan lebih kawalan ke atas pengurusan memori dan fleksibiliti. Pendekatan berbilang beban operator[] membolehkan mengakses elemen menggunakan sintaks biasa, tetapi memerlukan pelaksanaan yang lebih kompleks. Akhirnya, pilihan bergantung pada keperluan khusus aplikasi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Tatasusunan Dua Dimensi Dinamik dalam C Berdasarkan Input Pengguna?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!