ホームページ >バックエンド開発 >C++ >演算子のオーバーロードによって C で多次元配列アクセスを作成するにはどうすればよいですか?

演算子のオーバーロードによって C で多次元配列アクセスを作成するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-21 07:34:11440ブラウズ

How Can Operator Overloading Create Multidimensional Array Access in C  ?

多次元配列の演算子[][] のオーバーロード

[] 演算子は複数回オーバーロードでき、多次元配列の作成が可能になります。 2 次元配列の場合、このようなオーバーロードにより、function[row][col] 構文を使用して要素にアクセスできるようになります。

次のコード例を考えてみましょう。

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;
};

Thisクラスを使用すると、2 次元配列を作成し、オーバーロードされた [] 演算子を使用してその要素にアクセスできます。たとえば、次のように記述できます。

ArrayOfArrays aoa;
aoa[3][5];

このコードは、aoa 配列の行 3、列 5 の要素にアクセスします。配列の定義された境界外の要素にアクセスしようとしないように、適切な境界チェックを提供する必要があることに注意してください。

以上が演算子のオーバーロードによって C で多次元配列アクセスを作成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。