Veréis, tengo hecha esta función, pero resulta que cuando llega al "for" de abajo, termina la aplicación de repente y, además, el rendimiento de la CPU sube hasta casi al 100%. Le he dado mil vueltas y no le veo el fallo, a ver si me podéis decir que le pasa:
/* La función lo que hace es que inserta un valor en un vector dinámico en una posición dada, desplazando los elementos que hay a su derecha
un lugar a la derecha. */
void vector::inserta (const int &t, unsigned pos){
if(tamf==taml){
int *v1;
tamf=tamf*2;
try{
if(!(v1=new int[tamf])) throw bad_alloc();
for(int i=0;i<taml;i++){
v1[i]=v[i];
}
delete []v;
}
catch (bad_alloc){
cout << "Error al crear v1." << endl;
}
v=v1;
v[taml]=t;
taml++;
}else if(taml<tamf){
for(int i=(taml-1);i>=pos;i--) v[i++]=v[i]; //Aquí es donde se para.
v[pos]=t;
taml++;
}
}
Gracias de antemano!
PD: Rectifico, la aplicación no termina, si no que se queda ahí como si fuese un bucle infinito.
for(int i=(taml-1);i>=pos;i--) v[i++]=v[i];
te lo pongo en grande
for(int i=(taml-1);i>=pos;i--) v[i++]
Incrementas, decrementas, incrementas, decrementas...
Joder, estoy cegato perdido... Voy a cambiarlo y ahora te digo si fufa.
Edito: Ahora sí, ya va perfecto ;D No sé como le he puesto "i++" en vez de "i+1"...
Por cierto, una duda existencial, que diferencia hay entre limpiar y generar el main project a generarlo directamente?
Lo realmente increíble es que el rendimiento del CPU "sube" hasta casi el 100%... deberías dejar ese programa corriendo! xD (Chiste Semántico)