Heim >Backend-Entwicklung >C++ >Wie kann ich basierend auf Benutzereingaben effizient ein dynamisches zweidimensionales Array in C erstellen?

Wie kann ich basierend auf Benutzereingaben effizient ein dynamisches zweidimensionales Array in C erstellen?

DDD
DDDOriginal
2024-12-07 21:28:15539Durchsuche

How Can I Efficiently Create a Dynamic Two-Dimensional Array in C   Based on User Input?

Erstellen eines dynamischen zweidimensionalen Arrays basierend auf Benutzereingaben

In einigen Programmierszenarien kann es erforderlich sein, ein zweidimensionales Array zu erstellen Array mit einer Größe, die durch Benutzereingaben bestimmt wird. Während herkömmliche Arrays bei der Deklaration feste Dimensionen erfordern, bietet C Lösungen, um dieses Problem zu lösen.

Option 1: Verwenden eines Vektors von Vektoren

Ein Vektor von Vektoren, bezeichnet als vector> kann zur dynamischen Erstellung eines zweidimensionalen Arrays verwendet werden. Diese Methode kann jedoch aufgrund wiederholter Zeiger-Dereferenzierungen ineffizient sein, was zu einer langsameren Leistung führt.

Option 2: Verwenden einer benutzerdefinierten Matrixklasse mit Überladungsoperator

Effizienter Der Ansatz umfasst die Erstellung einer benutzerdefinierten Matrixklasse, die die Speicherzuweisung verwaltet und einen überladenen Operator für den Zugriff auf Elemente bereitstellt. Dieser Ansatz gewährleistet eine effiziente Speicherverwaltung und schnellere Zugriffszeiten.

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]; }
};

In dieser Implementierung behält die Matrixklasse die Spaltengröße und einen einzelnen zugrunde liegenden Vektor für die Datenspeicherung bei. Der überladene Operator() ermöglicht eine praktische, tiefgestellte Syntax für den Zugriff auf Elemente.

Beispielverwendung:

matrix<int> myMatrix(5, 5); // Declare a 5x5 matrix

myMatrix(0, 0) = 10; // Set the (0, 0) element to 10
std::cout << myMatrix(0, 0); // Output the (0, 0) element, which should be 10

Fazit

In diesem Artikel wurden zwei Optionen zum Erstellen dynamischer zweidimensionaler Arrays untersucht, die eine detailliertere und leistungsfähigere Alternative zum herkömmlichen Vektor-von-Vektoren-Ansatz bieten. Die benutzerdefinierte Matrixklasse mit überladenem Operator bietet eine effiziente Speicherverwaltung und eine verbesserte Zugriffsgeschwindigkeit und ist somit eine geeignete Wahl für Szenarien, in denen die Leistung entscheidend ist.

Das obige ist der detaillierte Inhalt vonWie kann ich basierend auf Benutzereingaben effizient ein dynamisches zweidimensionales Array in C erstellen?. 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