Home >Backend Development >C++ >How Can I Efficiently Create a Dynamic Two-Dimensional Array in C Based on User Input?
Creating a Dynamic Two-Dimensional Array Based on User Input
In some programming scenarios, it may be necessary to create a two-dimensional array with a size determined by user input. While traditional arrays require fixed dimensions at declaration, C provides solutions to tackle this issue.
Option 1: Using a Vector of Vectors
A vector of vectors, denoted as vector
Option 2: Using a Custom Matrix Class with Overload Operator
A more efficient approach involves creating a custom matrix class that handles the memory allocation and provides an overloaded operator for accessing elements. This approach ensures efficient memory management and faster access times.
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 this implementation, the matrix class maintains the column size and a single underlying vector for data storage. The overloaded operator() allows for convenient subscript-like syntax for accessing elements.
Example Usage:
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
Conclusion
This article explored two options for creating dynamic two-dimensional arrays, providing a more detailed and performant alternative to the traditional vector of vectors approach. The custom matrix class with overloaded operator offers efficient memory management and improved access speed, making it a suitable choice for scenarios where performance is crucial.
The above is the detailed content of How Can I Efficiently Create a Dynamic Two-Dimensional Array in C Based on User Input?. For more information, please follow other related articles on the PHP Chinese website!