Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mencipta Tatasusunan Dua Dimensi Dinamik dalam C Berdasarkan Input Pengguna?

Bagaimanakah Saya Boleh Mencipta Tatasusunan Dua Dimensi Dinamik dalam C Berdasarkan Input Pengguna?

Patricia Arquette
Lepaskan: 2024-12-08 22:25:11
asal
825 orang telah melayarinya

How Can I Create Dynamic Two-Dimensional Arrays in C   Based on User Input?

Mengisytiharkan Tatasusunan Dua Dimensi Dinamik Berdasarkan Input Pengguna

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>) boleh berfungsi sebagai penyelesaian untuk mencipta matriks secara dinamik. Dalam pendekatan ini, setiap vektor dalam mewakili baris matriks, manakala vektor luar bertindak sebagai bekas untuk baris ini. Saiz matriks boleh dilaraskan dengan hanya mengubah suai saiz vektor luar.

int n;
cin >> n;
vector<vector<int>> matrix(n, vector<int>(n));
Salin selepas log masuk

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

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

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!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan