Heim > Backend-Entwicklung > C++ > Wie kann ich basierend auf Benutzereingaben dynamische zweidimensionale Arrays in C erstellen?

Wie kann ich basierend auf Benutzereingaben dynamische zweidimensionale Arrays in C erstellen?

Patricia Arquette
Freigeben: 2024-12-08 22:25:11
Original
825 Leute haben es durchsucht

How Can I Create Dynamic Two-Dimensional Arrays in C   Based on User Input?

Dynamische zweidimensionale Arrays basierend auf Benutzereingaben deklarieren

Einführung

Erstellen eines dynamischen zweidimensionalen Arrays, das dies kann basierend auf Benutzereingaben angepasst werden kann, stellt die C-Programmierung vor Herausforderungen. Während Arrays bei der Deklaration normalerweise feste Größen haben, erfordert diese spezielle Aufgabe Flexibilität bei der Größenbestimmung. Lassen Sie uns verschiedene Ansätze für die dynamische Zuweisung und Bearbeitung solcher Arrays untersuchen.

Vektor-von-Vektoren-Ansatz

Ein Vektor von Vektoren (vector>) kann dienen als Lösung zur dynamischen Erstellung einer Matrix. Bei diesem Ansatz stellt jeder innere Vektor eine Zeile der Matrix dar, während der äußere Vektor als Container für diese Zeilen fungiert. Die Größe der Matrix kann durch einfaches Ändern der Größe des äußeren Vektors angepasst werden.

int n;
cin >> n;
vector<vector<int>> matrix(n, vector<int>(n));
Nach dem Login kopieren

Benutzerdefinierte Matrixklasse

Eine weitere Möglichkeit besteht darin, eine benutzerdefinierte Matrix zu implementieren Klasse, die die Funktionalität der dynamischen Verwaltung eines zweidimensionalen Arrays kapselt. Dieser Ansatz bietet mehr Kontrolle über die Datenstruktur und ermöglicht eine effiziente Speicherverwaltung.

template <class T>
class Matrix {
  int columns_;
  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

Mehrfache Überladungen von Operator[]

Es ist auch möglich, dynamisch zu implementieren zweidimensionale Arrays mit mehreren Überladungen des Operators[]. Dieser Ansatz nutzt Proxys, um indirekt auf die Daten zuzugreifen, und bietet eine Syntax, die dem herkömmlichen Array-Zugriff ähnelt.

template<class T, int size>
class Matrix3 {
  T data[size][size][size];
  class Proxy { Matrix3& m_; int index1_, index2_; };
  class Proxy2 { Matrix3& m_; int index_; };
public:
  Proxy2 operator[](int index) { return Proxy2(*this, index); }
  Proxy operator[](int index1, int index2) { return Proxy(*this, index1, index2); }
};
Nach dem Login kopieren

Fazit

Jeder Ansatz bietet ein unterschiedliches Maß an Flexibilität und Effizienz und einfache Implementierung. Der Vektor-von-Vektoren-Ansatz ist unkompliziert, kann jedoch aufgrund der mehreren Indirektionsebenen Auswirkungen auf die Leistung haben. Die benutzerdefinierte Matrixklasse bietet mehr Kontrolle über die Speicherverwaltung und Flexibilität. Die mehrfachen Überladungen des Operator[]-Ansatzes ermöglichen den Zugriff auf Elemente mit vertrauter Syntax, erfordern jedoch eine komplexere Implementierung. Letztendlich hängt die Wahl von den spezifischen Anforderungen der Anwendung ab.

Das obige ist der detaillierte Inhalt vonWie kann ich basierend auf Benutzereingaben dynamische zweidimensionale Arrays in C erstellen?. 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