实现一个名为MyStack的模板类,它使用STL类向量创建一个堆栈。 MyStack类将有两个函数 - push()和pop()。由于MyStack是一个模板类,因此必须以这样的方式编写它,以便它可以用于创建任何类型数据(内置和自定义类型)的堆栈。当弹出堆栈的元素时,应该从向量中删除它,以便弹出的数据不再使用内存。 在main()中,创建多个不同数据类型的堆栈,推送一些示例数据,并在从相应堆栈弹出数据时显示数据。
答案 0 :(得分:2)
让std::vector
缩小的唯一方法是swap
使用较小的向量。因此,在弹出每个对象时释放每个对象的内存需要复制(几乎)每个pop
的整个向量,使其成为O(n)
操作。
所以,我建议你不要那样做,或者如果这是作业,要么清楚地说明为什么实施如此糟糕,要么注意vector::pop_back
实际上没有任何东西。
顺便说一句,std::stack
<stack>
使用O(1)
实现push()
pop()
和std::vector
来处理分配。
答案 1 :(得分:0)
不会直接给你答案。但是你想要做的是创建一个包含TYPE指针的类。当指针所到达的数组被填充时,将信息复制到一个新的更大的数组上,然后删除旧的数组。跟踪容量和当前大小。
如果你不能自己编程,那么你真的需要回去学习更多关于语言的知识。