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 ?
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!