Maison >développement back-end >C++ >Comment puis-je surcharger l'opérateur [] pour accéder aux éléments d'un tableau bidimensionnel en C ?

Comment puis-je surcharger l'opérateur [] pour accéder aux éléments d'un tableau bidimensionnel en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-22 03:13:22518parcourir

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

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

Un tableau bidimensionnel est une collection d'éléments organisés en lignes et en colonnes. En C , les tableaux bidimensionnels sont généralement stockés sous forme de pointeur vers un tableau de pointeurs, chaque pointeur pointant vers un tableau d'éléments dans une rangée.

Surcharge de l'opérateur []

En C , il est possible de surcharger l'opérateur [] pour accéder aux éléments d'un tableau. Par défaut, l'opérateur [] prend un seul index entier et renvoie une référence à l'élément correspondant dans le tableau.

Surcharge pour deux dimensions

Pour permettre l'accès éléments d'un tableau à deux dimensions utilisant deux indices, on peut surcharger l'opérateur [] deux fois. Cela peut être fait en créant une classe imbriquée qui représente une ligne du tableau, puis en surchargeant l'opérateur [] pour la classe parent et la classe imbriquée.

Exemple de code

Voici un exemple d'implémentation d'une classe tableau à deux dimensions avec des opérateurs [] surchargés :

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

Dans cet exemple, le La classe ArrayOfArrays représente l'intégralité du tableau bidimensionnel, tandis que la classe Proxy représente une ligne du tableau. L'opérateur [] est surchargé dans les classes ArrayOfArrays et Proxy, permettant d'accéder aux éléments à l'aide d'un ou deux indices, respectivement.

Utilisation

Pour utiliser ArrayOfArrays classe, vous pouvez créer une instance et accéder aux éléments à l'aide des opérateurs [] :

ArrayOfArrays aoa;
aoa[3][5]; // Accesses the element at row 3, column 5

En surchargeant la classe [] de cette manière, nous pouvons accéder aux éléments d'un tableau à deux dimensions en utilisant une syntaxe similaire à l'accès aux éléments d'un tableau à une dimension.

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