ホームページ > バックエンド開発 > C++ > 2 次元配列アクセスのために [] 演算子を 2 回オーバーロードできますか?

2 次元配列アクセスのために [] 演算子を 2 回オーバーロードできますか?

Barbara Streisand
リリース: 2024-12-30 09:19:14
オリジナル
453 人が閲覧しました

Can the [] Operator Be Overloaded Twice for Two-Dimensional Array Access?

2 次元配列の Operator[][] オーバーロード

疑問が生じます: 表記を有効にするために、[] 演算子を 2 回オーバーロードできますか二次元配列の function3 のようなものですか?

答え:はい、可能です

これを実現するには、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;
};
ログイン後にコピー

これにより、次のような使用が可能になります。

ArrayOfArrays aoa;
aoa[3][5];
ログイン後にコピー

上記は簡略化された例であることに注意してください。通常は、追加の境界チェックやその他の機能が実装されます。

以上が2 次元配列アクセスのために [] 演算子を 2 回オーバーロードできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート