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

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

DDD
DDDasal
2024-12-07 21:28:15545semak imbas

How Can I Efficiently Create a Dynamic Two-Dimensional Array in C   Based on User Input?

Mencipta Tatasusunan Dua Dimensi Dinamik Berdasarkan Input Pengguna

Dalam sesetengah senario pengaturcaraan, mungkin perlu mencipta dua dimensi tatasusunan dengan saiz yang ditentukan oleh input pengguna. Walaupun tatasusunan tradisional memerlukan dimensi tetap pada pengisytiharan, C menyediakan penyelesaian untuk menangani isu ini.

Pilihan 1: Menggunakan Vektor Vektor

Vektor vektor, dilambangkan sebagai vektor>, boleh digunakan untuk mencipta tatasusunan dua dimensi secara dinamik. Walau bagaimanapun, kaedah ini boleh menjadi tidak cekap disebabkan oleh penyimpangan penunjuk berulang, yang membawa kepada prestasi yang lebih perlahan.

Pilihan 2: Menggunakan Kelas Matriks Tersuai dengan Pengendali Beban Lebih

Lebih cekap pendekatan melibatkan penciptaan kelas matriks tersuai yang mengendalikan peruntukan memori dan menyediakan operator terlampau beban untuk mengakses elemen. Pendekatan ini memastikan pengurusan memori yang cekap dan masa capaian yang lebih pantas.

template <class T>
class matrix {
    int columns_;
    std::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]; }
};

Dalam pelaksanaan ini, kelas matriks mengekalkan saiz lajur dan satu vektor asas untuk penyimpanan data. Operator terbeban() membenarkan sintaks seperti subskrip yang mudah untuk mengakses elemen.

Contoh Penggunaan:

matrix<int> myMatrix(5, 5); // Declare a 5x5 matrix

myMatrix(0, 0) = 10; // Set the (0, 0) element to 10
std::cout << myMatrix(0, 0); // Output the (0, 0) element, which should be 10

Kesimpulan

Artikel ini meneroka dua pilihan untuk mencipta tatasusunan dua dimensi dinamik, menyediakan alternatif yang lebih terperinci dan berprestasi kepada pendekatan vektor tradisional. Kelas matriks tersuai dengan pengendali terlebih beban menawarkan pengurusan memori yang cekap dan kelajuan akses yang dipertingkatkan, menjadikannya pilihan yang sesuai untuk senario yang prestasinya penting.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencipta Tatasusunan Dua Dimensi Dinamik dengan Cekap dalam C Berdasarkan Input Pengguna?. 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