繁体   English   中英

模板类和矢量

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM