Heim > Backend-Entwicklung > C++ > Wie kann ich den []-Operator für den Zugriff auf Elemente in einem zweidimensionalen Array in C überladen?

Wie kann ich den []-Operator für den Zugriff auf Elemente in einem zweidimensionalen Array in C überladen?

Susan Sarandon
Freigeben: 2024-12-22 03:13:22
Original
477 Leute haben es durchsucht

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

Überladen des []-Operators für zweidimensionale Arrays

Ein zweidimensionales Array ist eine Sammlung von Elementen, die in Zeilen und Spalten organisiert sind. In C werden zweidimensionale Arrays normalerweise als Zeiger auf ein Array von Zeigern gespeichert, wobei jeder Zeiger auf ein Array von Elementen in einer Zeile zeigt.

Überladen des []-Operators

In C ist es möglich, den []-Operator zu überladen, um auf Elemente eines Arrays zuzugreifen. Standardmäßig nimmt der []-Operator einen einzelnen ganzzahligen Index und gibt einen Verweis auf das entsprechende Element im Array zurück.

Überladung für zwei Dimensionen

Um den Zugriff zu ermöglichen Um Elemente eines zweidimensionalen Arrays mithilfe von zwei Indizes zu definieren, können wir den Operator [] zweimal überladen. Dies kann erreicht werden, indem eine verschachtelte Klasse erstellt wird, die eine Zeile des Arrays darstellt, und dann der []-Operator sowohl für die übergeordnete Klasse als auch für die verschachtelte Klasse überladen wird.

Beispielcode

Hier ist eine Beispielimplementierung einer zweidimensionalen Array-Klasse mit überladenen []-Operatoren:

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;
};
Nach dem Login kopieren

In diesem Beispiel ist die Die Klasse ArrayOfArrays repräsentiert das gesamte zweidimensionale Array, während die Klasse Proxy eine Zeile des Arrays darstellt. Der []-Operator ist sowohl in der ArrayOfArrays- als auch in der Proxy-Klasse überladen, sodass auf Elemente mit einem bzw. zwei Indizes zugegriffen werden kann.

Verwendung

Zur Verwendung von ArrayOfArrays Klasse können Sie eine Instanz erstellen und auf Elemente zugreifen, indem Sie die []-Operatoren verwenden:

ArrayOfArrays aoa;
aoa[3][5]; // Accesses the element at row 3, column 5
Nach dem Login kopieren

Durch Überladen des []-Operators in Auf diese Weise können wir auf Elemente eines zweidimensionalen Arrays zugreifen, indem wir eine Syntax verwenden, die dem Zugriff auf Elemente eines eindimensionalen Arrays ähnelt.

Das obige ist der detaillierte Inhalt vonWie kann ich den []-Operator für den Zugriff auf Elemente in einem zweidimensionalen Array in C überladen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage