Eigentlich sollten Sie einen Vektor mit einem Offset verwenden. Oder sogar ein Array mit einem Offset. Die zusätzliche Addition oder Subtraktion wird keinen Unterschied in der Ausführungsgeschwindigkeit des Programms machen.
Wenn Sie etwas mit genau der gleichen Geschwindigkeit wie ein Standard-C-Array wollen, können Sie den Offset auf den Array-Zeiger anwenden:
int* a = new int[10];
a = a + 5;
a[-1] = 1;
Es wird jedoch nicht empfohlen. Wenn Sie das wirklich tun wollen, sollten Sie eine Wrapper-Klasse mit Inline-Funktionen erstellen, die den schrecklichen Code verbirgt. Sie behalten die Geschwindigkeit des C-Codes bei, haben aber die Möglichkeit, mehr Fehlerprüfungen hinzuzufügen.
Wie in den Kommentaren erwähnt, können Sie nach dem Ändern des Array-Zeigers nicht mehr mit diesem Zeiger löschen. Sie müssen ihn auf den tatsächlichen Anfang des Arrays zurücksetzen. Die Alternative ist, dass Sie den Zeiger auf den Anfang immer beibehalten, aber mit einem anderen geänderten Zeiger arbeiten.
//resetting the array by adding the offset (of -5)
delete [] (a - 5);