Heim >Backend-Entwicklung >C++ >Wie überlade ich den []-Operator für den zweidimensionalen Array-Zugriff in C?

Wie überlade ich den []-Operator für den zweidimensionalen Array-Zugriff in C?

Susan Sarandon
Susan SarandonOriginal
2024-12-26 12:28:14261Durchsuche

How to Overload the [] Operator for Two-Dimensional Array Access 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn