Heim >Backend-Entwicklung >C++ >Wie überlade ich den []-Operator für den zweidimensionalen Array-Zugriff in C?
Überladen des []-Operators für zweidimensionale Arrays
Operatoren wie [] können überladen werden, um benutzerdefiniertes Verhalten für bestimmte Arrays bereitzustellen Datentypen. Bei zweidimensionalen Arrays ist es möglich, den []-Operator zweimal zu überladen, was eine bequeme und intuitive Syntax ermöglicht.
Überladung für mehrere Indizes
Um den []-Operator für ein zweidimensionales Array zu überladen, können Sie eine Klasse definieren, die das Array selbst darstellt. Innerhalb dieser Klasse können Sie den Operator [] zweimal definieren, einen für jeden 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 } };
Proxy-Klasse für verschachtelte Arrays
Alternativ können Sie a verwenden Proxy-Klasse zur Darstellung des eindimensionalen Arrays, das von der ersten Überladung zurückgegeben wird. Dies ermöglicht eine praktische Syntax für den Zugriff auf Elemente mithilfe mehrerer Indizes.
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; };
Verwendung
Mit dieser Implementierung können Sie den überladenen []-Operator verwenden, um auf Elemente zuzugreifen im zweidimensionalen Array wie folgt:
ArrayOfArrays aoa; aoa[3][5];
Diese Syntax ähnelt dem Zugriff auf Elemente in einem regulären zweidimensionalen Array einfach zu bedienen und zu verstehen.
Das obige ist der detaillierte Inhalt vonWie überlade ich den []-Operator für den zweidimensionalen Array-Zugriff in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!