Título: crear matriz con new en una clase c++ Publicado por: fafafa01 en 27 Septiembre 2017, 01:33 am Buenas ¿puedo hacer esto en c++?
Código
En caso de que no, ¿como podria hacer una matriz con new que reserve de una vez las NxN celdas y asi me queden todas las celdas juntas (con respecto a la dirección de memoria)? Título: Re: crear matriz con new en una clase c++ Publicado por: ivancea96 en 28 Septiembre 2017, 22:09 pm Salvo que quieras hacer algún "hack" , 1 new y un for para hacer otros new es la solución normal.
Otra opción es reservar NxM elementos, y acceder con la fórmula (siendo 'i' el primer índice y 'j' el segundo): matriz[j + i*N]. Teniendo cuidado con matrices especialmente grandes ya que es más probable que obtengas un error al tratar de encontrar NxMx(sizeof) bytes contiguos (cosa más complicada si lo divides en filas). En cuanto a eficiencia, si bien compiten bastante (y no olvidando que utilizar varios punteros aumenta mucho la legibilidad), se pueden ver pequeños cambios: Código
Citar 2ms on: Initialization 1 0ms on: Initialization 2 2514ms on: Loop 1 - 1 3296ms on: Loop 1 - 2 2001ms on: Loop 2 Título: Re: crear matriz con new en una clase c++ Publicado por: _TTFH_3500 en 28 Septiembre 2017, 23:41 pm Una forma es almacenar los NxN elementos en un arreglo, el elemento de la posicion A(i,j) se almacena en A(i*N+j) y reciprocamente el elemento el la posicion i se encuentra en la fila i div N, y en la columna j (mod N) Código
Y la forma tipica usando memoria dinámica: Código
|