Considere o código em C++ mostrado abaixo:
template <class T, int t>
class z {
T *v, *p;
public:
z(){
v = p = new T[t];
}
~z(){
delete[] v;
}
void a(T e){
*p++ = e;
}
T b(){
return *p;
}
T c(){
return *--p;
}
int d(){
return v==p;
}
};
Selecione a alternativa abaixo que descreve apropriadamente a estrutura de dados implementada pela classe z