Heim > Backend-Entwicklung > C++ > Wie erstelle ich dynamische zweidimensionale Arrays in C?

Wie erstelle ich dynamische zweidimensionale Arrays in C?

Mary-Kate Olsen
Freigeben: 2024-12-14 18:00:28
Original
126 Leute haben es durchsucht

How to Create Dynamic Two-Dimensional Arrays in C  ?

Erstellen dynamischer zweidimensionaler Arrays in C

In C umfasst die traditionelle Methode zum Deklarieren eines Arrays die Angabe seiner Dimensionen zur Kompilierungszeit. Was aber, wenn Sie ein Array erstellen müssen, dessen Größe dynamisch basierend auf Benutzereingaben bestimmt wird?

Vektor von Vektoren: vector>

Ein Ansatz besteht darin, einen Vektor von Vektoren zu verwenden. Ein Vektor> würde ein dynamisches zweidimensionales Array erstellen, aber dies kann aufgrund der mehreren beteiligten Indirektionsebenen zu Geschwindigkeit und Speicheraufwand führen.

Benutzerdefinierte Matrixklasse

Für optimale Um die Leistung zu verbessern, sollten Sie die Erstellung einer benutzerdefinierten Matrixklasse in Betracht ziehen:

template <class T>
class matrix {
    int columns_;
    std::vector<T> data;

public:
    matrix(int columns, int rows) : columns_(columns), data(columns * rows) {}

    T& operator()(int column, int row) { return data[row * columns_ + column]; }
};
Nach dem Login kopieren

Diese Klasse ermöglicht den Zugriff auf Matrixelemente mithilfe eines prägnanten Operators(), der die Syntax von a imitiert zweidimensionales Array.

Beispielmatriximplementierung

Als Referenz finden Sie hier eine statisch zugewiesene 3D-Matriximplementierung, die mehrere Ebenen von Proxys verwendet, um die Operator[]-Syntax zu unterstützen:

template<class T, int size>
class matrix3 {

    T data[size][size][size];

    friend class proxy;
    friend class proxy2;

    class proxy {
        matrix3& m_;
        int index1_, index2_;

    public:
        proxy(matrix3& m, int i1, int i2) : m_(m), index1_(i1), index2_(i2) {}

        T& operator[](int index3) { return m_.data[index1_][index2_][index3]; }
    };

    class proxy2 {
        matrix3& m_;
        int index_;

    public:
        proxy2(matrix3& m, int d) : m_(m), index_(d) {}

        proxy operator[](int index2) { return proxy(m_, index_, index2); }
    };

public:
    proxy2 operator[](int index) { return proxy2(*this, index); }
};
Nach dem Login kopieren

Verwendung

Beide Implementierungen können sein Wird zum Erstellen und Bearbeiten dynamischer zweidimensionaler Arrays mit der bekannten C-Syntax verwendet.

Das obige ist der detaillierte Inhalt vonWie erstelle ich dynamische zweidimensionale Arrays in C?. 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