C++中的stack类使用deque容器实现,因此可以使用deque的拷贝构造函数和赋值运算符来完成栈的拷贝。
假设有一个名为mystack的stack对象,要将其拷贝为newstack对象,可以使用以下代码:
#include <stack>
using namespace std;
int main() {
stack<int> mystack;
// 向mystack中添加元素
mystack.push(1);
mystack.push(2);
mystack.push(3);
// 使用拷贝构造函数创建新的栈对象
stack<int> newstack(mystack);
// 打印newstack中的元素
while (!newstack.empty()) {
cout << newstack.top() << endl;
newstack.pop();
}
return 0;
}
在上述代码中,使用stack<int>(mystack)
创建了一个名为newstack的新栈对象,并将mystack中的所有元素拷贝到新栈中。
需要注意的是,如果使用赋值运算符mystack = newstack
,则会将新栈中的元素拷贝到旧栈中,而不是创建一个新的栈对象。因此,要创建一个新的栈对象,应该使用拷贝构造函数。