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
Libérer: 2024-12-22 03:13:22
original
564 Les gens l'ont consulté

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;
};
Copier après la connexion

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
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal