在C++ STL中,stack類是一種容器適配器,它基于其他的容器(如vector、deque等)實現。stack本身并沒有提供深拷貝的方法,因為它是基于其他容器實現的,所以深拷貝的操作應該在底層容器上進行。
如果你需要對一個stack進行深拷貝操作,可以先將stack中的元素逐個取出,然后將這些元素存儲到另一個stack或其他容器中。以下是一個示例代碼:
#include <iostream>
#include <stack>
int main() {
std::stack<int> originalStack;
originalStack.push(1);
originalStack.push(2);
originalStack.push(3);
std::stack<int> copiedStack;
// 深拷貝操作
std::stack<int> tempStack;
while (!originalStack.empty()) {
tempStack.push(originalStack.top());
originalStack.pop();
}
while (!tempStack.empty()) {
copiedStack.push(tempStack.top());
tempStack.pop();
}
// 輸出copiedStack
while (!copiedStack.empty()) {
std::cout << copiedStack.top() << " ";
copiedStack.pop();
}
return 0;
}
在這個示例中,我們首先將原始的stack中的元素逐個取出,存儲到tempStack中,然后再將這些元素逐個取出,存儲到copiedStack中,實現了深拷貝操作。最后輸出copiedStack中的元素。