模板类&向量

时间:2010-08-14 23:42:47

标签: c++ vector

实现一个名为MyStack的模板类,它使用STL类向量创建一个堆栈。 MyStack类将有两个函数 - push()和pop()。由于MyStack是一个模板类,因此必须以这样的方式编写它,以便它可以用于创建任何类型数据(内置和自定义类型)的堆栈。当弹出堆栈的元素时,应该从向量中删除它,以便弹出的数据不再使用内存。 在main()中,创建多个不同数据类型的堆栈,推送一些示例数据,并在从相应堆栈弹出数据时显示数据。

2 个答案:

答案 0 :(得分:2)

std::vector缩小的唯一方法是swap使用较小的向量。因此,在弹出每个对象时释放每个对象的内存需要复制(几乎)每个pop的整个向量,使其成为O(n)操作。

所以,我建议你不要那样做,或者如果这是作业,要么清楚地说明为什么实施如此糟糕,要么注意vector::pop_back实际上没有任何东西。

顺便说一句,std::stack <stack>使用O(1)实现push() pop()std::vector来处理分配。

答案 1 :(得分:0)

不会直接给你答案。但是你想要做的是创建一个包含TYPE指针的类。当指针所到达的数组被填充时,将信息复制到一个新的更大的数组上,然后删除旧的数组。跟踪容量和当前大小。

如果你不能自己编程,那么你真的需要回去学习更多关于语言的知识。