gpt4 book ai didi

C++(在基于数组的堆栈中弹出)我们删除元素吗?

转载 作者:行者123 更新时间:2023-11-28 02:23:48 24 4
gpt4 key购买 nike

<分区>

这里是关于使用 ARRAY 实现的 STACK 的讲义中的一些代码。

在规范中:

template <typename T>
class Stack {
public:
Stack();
bool pop (T& stackTop);
//there is still some other code

private:
int maxSize;
int* arr;
int _size;
}

在实现中:

bool Stack<T>::pop(T& stackTop){
if (isEmpty()){
return false;
}else{
--_size;
stackTop=arr[_size];
return true;
}
}

和一些用户程序的例子:

Stack<int> st;
int k;
st.push(1);st.push(2);st.push(3);//will add element 1 ,2, and 3.
st.pop(k);cout<<"pop"<<k<<endl; //will pop the last element which is 3 and print pop 3

据我所知,在 pop 实现中,我们更新(减少一)数组的大小。但是我们似乎并没有删除那个元素!那么,元素实际上还在那里吗,我们只是减小了大小,以便移动数组的顶部?例如我的最大尺寸是 100在代码中,我按了 1、2 和 3。现在顶部在 3 上。其余 97 个元素仍未分配。现在我弹出(这是最后一个元素 3)。当我弹出时,我只是将顶部“移动”到 2。但 3 实际上仍然存在,其余 97 个元素仍未分配。???

请解释它是如何工作的。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com