Heim > Backend-Entwicklung > C++ > Wie kann ich ein 2D-Array statisch als Klassendatenmitglied in C deklarieren?

Wie kann ich ein 2D-Array statisch als Klassendatenmitglied in C deklarieren?

Linda Hamilton
Freigeben: 2024-12-11 00:56:12
Original
1016 Leute haben es durchsucht

How Can I Statically Declare a 2D Array as a Class Data Member in C  ?

Statisches Deklarieren eines 2D-Arrays als Klassendatenelement

Ihr Ziel ist es, eine Gitterklasse mit den Datenelementen NR, NC und einem 2D-Array-Koordinatensystem zu erstellen [NR][NC]. Sie möchten NR und NC über den Klassenkonstruktor initialisieren und eine dynamische Speicherzuweisung vermeiden, um die Speichernutzung zu optimieren und Cache-Fehler zu minimieren.

Um dies zu erreichen, sollten Sie die Verwendung von std::vector in Betracht ziehen, das eine zusammenhängende Speicherzuweisung bereitstellt. Hier ist eine modifizierte Version Ihres Codeausschnitts:

class grid {
public:
    vector<double> coordinates;
    unsigned NR, NC;

    grid(unsigned NR, unsigned NC) : NR(NR), NC(NC), coordinates(NR * NC) {}

    double& operator()(unsigned r, unsigned c) { return coordinates[r * NC + c]; }
};

int main() {
    grid g(2, 3);
    g(0, 0) = 1;
    g(1, 2) = 6;
}
Nach dem Login kopieren

Diese Klasse definiert ein 2D-Array mithilfe eines zusammenhängenden Vektors. Die Methode „operator()“ bietet eine bequeme Möglichkeit, mithilfe von Zeilen- und Spaltenindizes auf Elemente zuzugreifen.

Dieser Ansatz vermeidet eine dynamische Zuweisung, sorgt für eine zusammenhängende Speicherzuweisung und gewährleistet eine effiziente Speichernutzung.

Das obige ist der detaillierte Inhalt vonWie kann ich ein 2D-Array statisch als Klassendatenmitglied in C deklarieren?. 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