Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membebankan Operator [] untuk Mengakses Elemen dalam Tatasusunan Dua Dimensi dalam C ?

Bagaimanakah Saya Boleh Membebankan Operator [] untuk Mengakses Elemen dalam Tatasusunan Dua Dimensi dalam C ?

Susan Sarandon
Lepaskan: 2024-12-22 03:13:22
asal
516 orang telah melayarinya

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

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;
};
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan