here's a
stack:
T[] stack;
void push(elem) {
stack ~= elem;
}
T pop() {
T elem = stack[$-1];
stack = stack[0..$-1];
return elem;
}
Won't this reallocate every time you pop an element and then push a new one?
