[英]template class & vector
实现一个名为MyStack的模板类,该模板类使用STL类向量创建堆栈。 MyStack类将具有两个函数– push()和pop()。 由于MyStack是模板类,因此必须以一种可用于创建任何类型的数据堆栈(内置和自定义类型)的方式编写它。 弹出堆栈的某个元素时,应将其从向量中删除,以使弹出的数据不再使用内存。 在main()中,创建多个这样的不同数据类型的堆栈,推送一些样本数据,并在从相应的堆栈中弹出数据时显示数据。
得到的唯一途径std::vector
萎缩是swap
用较小的载体它。 因此,释放每个对象时,释放其内存将需要为每个pop
复制(几乎)整个向量,从而使其成为O(n)
操作。
因此,我建议您不要那样做,或者如果这是家庭作业,请明确指出实现如此糟糕的原因,或者指出vector::pop_back
实际上不会释放任何东西。
顺便说一句, <stack>
std::stack
使用std::vector
来实现O(1)
push()
和pop()
来处理分配。
不会直接给你答案。 但是,您要做的是创建一个包含TYPE指针的类。 当指针所指向的数组被填充时,将信息复制到新的更大的数组中,然后删除旧的数组。 跟踪容量和当前大小。
如果您自己不能编程,那么您真的需要返回并进一步了解该语言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.