Te adjunto un pequeño código de como lo he solucionado yo.
Creo el vector dos veces, copiado los datos, luego con esta rutina desplazo los componentes y asigno al original el valor introducido en la posición introducida, pon tu el código de aceptar los datos y mostrarlos, iValores la cantidad de datos del vector, iPos la posición pedida al usuario y iValor lo que quiere grabar. Yo he cargado los valores del 1 al 5 para simplificar.
	int iValores = 4;    // Cantidad de valores del vector
	int iVector[5];
	int iVectorC[5];
	for(int i=0;i<5;i++) // Aqui cargo los vectores del 1 al 5
	{
		iVector[i] = i;
		iVectorC[i] = i;
	}
	int iPos = 2;     // Datos pedidos al usuario
	int iValor = 48;  // Datos pedidos al usuario
	for(int i=iPos;i<iValores;i++)    // Aqui corro el valor a partir de la posicion
		iVectorC[i+1] = iVector[i];
	iVectorC[iPos] = iValor;   // Aqui asigno el valor introducido
	for(int i=0;i<5;i++)      // Aqui vuelvo a copiar un vector sobre el otro
		iVector[i] = iVectorC[i];
	cout << iVectorC[0] << endl;
	cout << iVectorC[1] << endl;
	cout << iVectorC[2] << endl;
	cout << iVectorC[3] << endl;
	cout << iVectorC[4] << endl;
iVector y iVectorC es donde están los datos almacenados, con el bucle for desde la posición deseada hasta el final, voy moviendo de iVector a iVectorC y después del bucle grabo el parámetro introducido, copia el vector de nuevo sobre la copia para la siguiente entrada.
Un saludo