Melebihi Muatan Operator [] untuk Tatasusunan Dua Dimensi
Susun atur dua dimensi ialah himpunan elemen yang disusun ke dalam baris dan lajur. Dalam C , tatasusunan dua dimensi biasanya disimpan sebagai penuding kepada tatasusunan penuding, dengan setiap penuding menghala kepada tatasusunan elemen dalam satu baris.
Melebihi Muatan Operator []
Dalam C , adalah mungkin untuk membebankan operator [] untuk mengakses elemen tatasusunan. Secara lalai, pengendali [] mengambil indeks integer tunggal dan mengembalikan rujukan kepada elemen yang sepadan dalam tatasusunan.
Melebihi Muatan untuk Dua Dimensi
Untuk membenarkan akses elemen tatasusunan dua dimensi menggunakan dua indeks, kita boleh membebankan operator [] dua kali. Ini boleh dilakukan dengan mencipta kelas bersarang yang mewakili baris tatasusunan, dan kemudian melebihkan pengendali [] untuk kedua-dua kelas induk dan kelas bersarang.
Kod Contoh
Berikut ialah contoh pelaksanaan kelas tatasusunan dua dimensi dengan kelebihan beban [] operator:
class ArrayOfArrays { public: ArrayOfArrays() { _arrayofarrays = new int*[10]; for(int i = 0; i < 10; ++i) _arrayofarrays[i] = new int[10]; } class Proxy { public: Proxy(int* _array) : _array(_array) { } int operator[](int index) { return _array[index]; } private: int* _array; }; Proxy operator[](int index) { return Proxy(_arrayofarrays[index]); } private: int** _arrayofarrays; };
Dalam contoh ini, kelas ArrayOfArrays mewakili keseluruhan tatasusunan dua dimensi, manakala kelas Proksi mewakili baris tatasusunan. Pengendali [] dibebankan dalam kedua-dua kelas ArrayOfArrays dan Proxy, membenarkan elemen untuk diakses menggunakan satu atau dua indeks, masing-masing.
Penggunaan
Untuk menggunakan ArrayOfArrays kelas, anda boleh membuat contoh dan mengakses elemen menggunakan [] operator:
ArrayOfArrays aoa; aoa[3][5]; // Accesses the element at row 3, column 5
Dengan melebihkan operator [] dengan cara ini, kita boleh mengakses elemen tatasusunan dua dimensi menggunakan sintaks yang serupa dengan mengakses elemen tatasusunan satu dimensi.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membebankan Operator [] untuk Mengakses Elemen dalam Tatasusunan Dua Dimensi dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!