设计一个栈类模板,要求可以存放任意类型的数据,并编写测试代码。
时间: 2024-03-17 19:39:41 浏览: 19
好的,下面是栈类模板的实现及测试代码:
```cpp
#include <iostream>
#include <vector>
#include <string>
using namespace std;
template<typename T>
class Stack {
private:
vector<T> data;
public:
Stack() {}
void push(T val) {
data.push_back(val);
}
T pop() {
T val = data.back();
data.pop_back();
return val;
}
T top() {
return data.back();
}
bool empty() {
return data.empty();
}
};
int main() {
Stack<int> intStack;
intStack.push(1);
intStack.push(2);
intStack.push(3);
cout << intStack.top() << endl; // 3
intStack.pop();
cout << intStack.top() << endl; // 2
Stack<string> strStack;
strStack.push("Hello");
strStack.push("World");
cout << strStack.top() << endl; // World
strStack.pop();
cout << strStack.top() << endl; // Hello
return 0;
}
```
上面的代码定义了一个栈类模板 `Stack<T>`,其中 `T` 是任意类型的模板参数。栈内部使用 STL 中的 `vector` 实现,支持 `push`、`pop`、`top` 和 `empty` 四个操作,分别表示入栈、出栈、获取栈顶元素和判断栈是否为空。
测试代码中首先创建了一个整型栈 `intStack`,并依次将 1、2、3 入栈。然后通过 `top` 获取栈顶元素,输出 3,接着通过 `pop` 出栈一个元素,再次获取栈顶元素并输出 2。接下来创建了一个字符串栈 `strStack`,同样进行了入栈、出栈、获取栈顶元素等操作,输出结果为 "World" 和 "Hello"。
以上就是栈类模板及测试代码的实现。