基于list实现的stack的拷贝构造函数怎么来实现?
//list申明
template <class ELEM>
class list{
... //省略,一般的list
};
//stack申明
template <class ELEM>
class stack{
private:
list <ELEM> memory; //存储体
public:
stack(const stack <ELEM> &); //拷贝构造函数
void push(ELEM elem); //压栈
void pop(); //出栈
ELEM top(); //返回栈顶元素
... //其他省略
};
//实现拷贝构造函数
template <class ELEM>
stack <ELEM> ::stack(const stack <ELEM> & source){
//这里怎么实现阿,stack只是提供了push() pop() top()这些外部接口
//没有提供用于遍历整个stack的外部接口,怎么做到把source的所有元素
//都copy过来??
}
//大哥们给点指教阿,谢!
[解决办法]
stack不是有默认的拷贝构造函数和赋值运算符嘛。
[解决办法]
template < class ELEM >
stack <ELEM> ::stack(const stack <ELEM> & source)
: memory(source.memory)
{
}
用 list 的 copy constructor 不行吗?
template < class ELEM >
stack <ELEM> ::stack(const stack <ELEM> & source)
{
memory = source.memory;
}
用个比较差的方案。