Estoy aprendiendo a programar, y C++ es mi primer idioma. No se moleste en usar punteros para mostrarme; aún no los entiendo, y no me molestaré hasta que tenga más tiempo libre para dedicarme a esto.¿Se puede cambiar el tamaño de una matriz C++ después de la inicialización?
int mergeSort()
{
const int n = 9;
int originalarray[n] = {1, 3, 5, 7, 9, 2, 4, 6, 8};
const int halfelements = (sizeof(originalarray)/sizeof(int))/2;
int farray[halfelements];
int sarray[halfelements];
for (int i = 0; i < halfelements; i++) {
farray[i] = originalarray[i];
}
for (int i = halfelements, x = 0; i < (halfelements * 2); i++, x++) {
sarray[x] = originalarray[i];
}
me asignaron (no estoy tomando clases - aprendiendo con algunos amigos me está ayudando a cabo) un algoritmo de tipo de combinación, con el algoritmo explicado, pero no la implementación. Quiero reescribir esto para que funcione tanto para enteros pares como impares. He intentado añadir este código:
if ((n % 2) != 0) int farray[halfelements + 1];
Así que podría utilizar el mismo entero para iterar sobre ambas matrices posteriores. Un sizeof (farray) muestra 16 bytes o 4 enteros. Entonces no está redimensionando. Lo que quiero saber es si es posible cambiar el tamaño de las matrices después de que se inicializaron.
Editar: ¿Cómo implementaría un vector? No entiendo cómo usar iteradores en un ciclo para iterar y copiar los valores.
OK, gracias. He descubierto cómo implementarías std :: vector en este algoritmo.Aunque desearía que no había pasado dos horas depurar el código, sólo para averiguar mi cabecera de la función "mergesort int (std :: vector, int)" faltaba un "" =/ –
jkeys
no son respaldadas 'Vector's por matrices dinámicas de todos modos? Dinámicamente la modificación del tamaño de una matriz o un vector debe incurrir en las mismas penalizaciones de rendimiento derecha> – Jason