首頁 > 後端開發 > C++ > 如何重載 C 中的 [] 運算子來存取二維數組中的元素?

如何重載 C 中的 [] 運算子來存取二維數組中的元素?

Susan Sarandon
發布: 2024-12-22 03:13:22
原創
516 人瀏覽過

How Can I Overload the [] Operator for Accessing Elements in a Two-Dimensional Array in C  ?

重載二維陣列的 [] 運算子

二維陣列是組織成行和列的元素的集合。在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板