Rumah > pembangunan bahagian belakang > C++ > Bagaimana Operator Overloading Boleh Mencipta Akses Tatasusunan Berbilang Dimensi dalam C?

Bagaimana Operator Overloading Boleh Mencipta Akses Tatasusunan Berbilang Dimensi dalam C?

DDD
Lepaskan: 2024-12-21 07:34:11
asal
434 orang telah melayarinya

How Can Operator Overloading Create Multidimensional Array Access in C  ?

Operator Lebih Muatan[][] untuk Tatasusunan Berbilang Dimensi

Pengendali [] boleh terlebih beban berbilang kali, membenarkan penciptaan tatasusunan berbilang dimensi. Dalam kes tatasusunan dua dimensi, beban lampau sedemikian memberi anda kuasa untuk mengakses elemen menggunakan sintaks fungsi[row][col].

Pertimbangkan kod contoh berikut:

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

Ini kelas membolehkan anda mencipta tatasusunan dua dimensi dan mengakses elemennya menggunakan pengendali [] yang terlebih beban. Sebagai contoh, anda boleh menulis:

ArrayOfArrays aoa;
aoa[3][5];
Salin selepas log masuk

Kod ini akan mengakses elemen pada baris 3, lajur 5 tatasusunan aoa. Ambil perhatian bahawa anda mesti menyediakan semakan sempadan yang sesuai untuk memastikan anda tidak cuba mengakses elemen di luar sempadan yang ditentukan tatasusunan.

Atas ialah kandungan terperinci Bagaimana Operator Overloading Boleh Mencipta Akses Tatasusunan Berbilang 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan