Operator[][] Overload untuk Tatasusunan Dua Dimensi
Persoalannya timbul: bolehkah operator [] dibebankan dua kali untuk mendayakan tatatanda seperti function3 untuk tatasusunan dua dimensi?
Jawapan: Ya, Ia Kemungkinan
Untuk mencapai ini, seseorang boleh membebankan operator[] untuk mengembalikan objek yang menawarkan pengendali [] lain untuk mengakses elemen yang diingini. Berikut ialah kod contoh:
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; };
Ini membenarkan penggunaan seperti:
ArrayOfArrays aoa; aoa[3][5];
Perhatikan bahawa perkara di atas ialah contoh ringkas; semakan sempadan tambahan dan ciri lain biasanya akan dilaksanakan.
Atas ialah kandungan terperinci Bolehkah Operator [] Dibebankan Dua Kali untuk Akses Tatasusunan Dua Dimensi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!