Использование начальной вершины -1
позволяет вам реализовать push
с помощью всего лишь:
stackArray[++stackTop] = x;
Тем не менее, для начальной вершины 0
просто потребуется такой же эффективный, если немного больше многословный двухслойный:
stackArray[stackTop] = x;
++stackTop;
или чтобы сохранить его однострочным:
stackArray[stackTop++] = x;
, где последний идеально подходит до тех пор, пока вершина является примитивным типом (для пользовательских классов постинкремент значительно менее эффективен, так как он обязательно включает в себя полную копию состояния; некоторые люди избегают постинкремента в C ++ в целом, чтобы развить привычки, которые не вызывают проблем у пользователя -определенные классы).
Дело в том, что нет особых преимуществ для -1
против 0
; в коде, который вы просматриваете, могут быть общие соглашения, но все это работает.