重載二維陣列的 [] 運算子
二維陣列是組織成行和列的元素的集合。在 C 中,二維數組通常儲存為指向指標數組的指針,每個指針都指向一行中的元素數組。
重載 [] 運算子
在 C 中,可以重載 [] 運算子來存取陣列的元素。預設情況下,[] 運算子採用單一整數索引並傳回陣列中對應元素的參考。
二維重載
允許存取使用兩個索引的二維數組的元素,我們可以重載 [] 運算子兩次。這可以透過建立一個表示數組行的巢狀類,然後為父類和巢狀類別重載 [] 運算子來完成。
範例程式碼
這是一個帶有重載[] 運算子的二維數組類別的範例實作:
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; };
在此例如,ArrayOfArrays 類別表示整個二維數組,而Proxy 類別表示數組的一行。 [] 運算子在 ArrayOfArrays 和 Proxy 類別中都被重載,允許分別使用一個或兩個索引來存取元素。
用法
使用ArrayOfArrays類,您可以使用[] 運算子建立實例並存取元素:
ArrayOfArrays aoa; aoa[3][5]; // Accesses the element at row 3, column 5
透過重載通過這載種方式使用[] 運算符,我們可以使用類似於存取一維數組元素的語法來存取二維數組的元素。
以上是如何重載 C 中的 [] 運算子來存取二維數組中的元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!