Maison >développement back-end >C++ >Comment surcharger l'opérateur [] pour l'accès aux tableaux bidimensionnels en C ?

Comment surcharger l'opérateur [] pour l'accès aux tableaux bidimensionnels en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-26 12:28:14268parcourir

How to Overload the [] Operator for Two-Dimensional Array Access in C  ?

Surcharge de l'opérateur [] pour les tableaux bidimensionnels

Les opérateurs, tels que [], peuvent être surchargés pour fournir un comportement personnalisé pour des types de données. Dans le cas de tableaux bidimensionnels, il est possible de surcharger l'opérateur [] deux fois, permettant une syntaxe pratique et intuitive.

Surcharge pour plusieurs indices

Pour surcharger l'opérateur [] pour un tableau à deux dimensions, vous pouvez définir une classe qui représente le tableau lui-même. Dans cette classe, vous pouvez définir l'opérateur [] deux fois, un pour chaque index.

class TwoDimensionalArray {
public:
    int operator[](int index1) {
        // Return a one-dimensional array
    }

    int operator[](int index1, int index2) {
        // Access the element at the given indices
    }
};

Classe proxy pour les tableaux imbriqués

Vous pouvez également utiliser un classe proxy pour représenter le tableau unidimensionnel renvoyé par la première surcharge. Cela permet une syntaxe pratique pour accéder aux éléments à l'aide de plusieurs index.

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

Utilisation

Avec cette implémentation, vous pouvez utiliser l'opérateur surchargé [] pour accéder aux éléments dans le tableau bidimensionnel comme ceci :

ArrayOfArrays aoa;
aoa[3][5];

Cette syntaxe est similaire à l'accès aux éléments dans un tableau bidimensionnel ordinaire, ce qui la rend facile à utiliser et comprendre.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn