Нет, то, что у вас есть, настолько эффективно, насколько вы собираетесь получить.Однако, если вы обнаружите, что делаете это, вам, вероятно, следует просто использовать std::vector
или std::deque
вместо стека.std::stack
- это просто оболочка вокруг одного из этих контейнеров (обычно std::deque
). Если вы используете один из этих контейнеров, вы можете эффективно изменить последовательность с помощью обратных итераторов, а если вы используете std::deque
, вы можетедаже эффективно вставьте на другую сторону, используя push_front
.
Примечание: у вас, вероятно, также должно быть copyStackContent
, чтобы вернуть новый стек вместо взятия целевого стека по ссылке.Это более читабельно, и может быть дешевле выделить новый стек и просто освободить старый, чем удалить все элементы из существующего стека.