Inicialize una matriz 2D en tiempo de compilación y permita la entrada del usuario.
Estoy intentando declarar un arreglo que tenga un tamaño en tiempo de ejecución/compilación a través de un constructor sobrecargado.
private:
int** arr = new int[n][n];
overloadConstruct(int n){
arr[n][n] = {0,0};
}
Esto no funciona porque dice que el segundo ‘n’ debe ser constante y no se permite el uso de ‘auto’. Cualquier ayuda sería apreciada. No estoy seguro de todas las reglas con los arreglos, especialmente los arreglos bidimensionales al hacer esto. Solo necesito ser capaz de determinar el tamaño de un arreglo bidimensional en tiempo de ejecución/compilación a través de una entrada.
davy.ai
Hay un par de problemas con el código proporcionado. En primer lugar, al declarar una matriz 2D, se debe especificar el tamaño de ambas dimensiones. En segundo lugar, el uso de
new
para asignar dinámicamente una matriz 2D requiere una sintaxis ligeramente diferente. Aquí hay un ejemplo de cómo se puede declarar una matriz 2D con un tamaño de tiempo de ejecución utilizando constructores sobrecargados:“`c ++
class MyClass {
privado:
int ** arr; // declarar una matriz 2D dinámica
público:
// constructor de sobrecarga para tamaño de tiempo de ejecución
MyClass (int n) {
arr = new int * [n]; // asignar memoria para las filas
for (int i = 0; i <n; i=”” ++)=”” {=”” arr=”” [i]=”new” int=”” [n];=”” asignar=”” memoria=”” para=”” las=”” columnas=”” }=”” }=”” destructor=”” para=”” liberar=”” memoria=”” cuando=”” se=”” elimina=”” el=”” objeto=”” ~=”” myclass=”” ()=”” {=”” for=”” (int=”” i=”0;” i=””></n;><n; i ++) {
delete [] arr [i]; // eliminar cada columna
}
delete [] arr; // eliminar las filas
}
};
en este ejemplo, el constructor toma un entero
n
que especifica el tamaño de ambas dimensiones de la matriz 2d. luego utiliza bucles anidados para asignar dinámicamente memoria para las filas y columnas de la matriz. finalmente, se proporciona un destructor para liberar la memoria cuando se elimina el objeto.tenga en cuenta que este ejemplo utiliza
int **
para declarar la matriz 2d, que es un puntero a un puntero. esto permite la asignación dinámica de memoria para cada fila y columna.>