Indeed, you should use an offset vector. Or even an array with an offset. Additional addition or subtraction will not make any difference to the speed of the program.
If you want something at the same speed as the default C array, you can apply the offset to the array pointer:
int* a = new int[10];
a = a + 5;
a[-1] = 1;
. , - , . C, .
, . reset . , , .
delete [] (a - 5);