c++设计一个栈类模板,要求可以存放任意类型的数据,并编写测试代码
时间: 2024-03-03 22:51:46 浏览: 92
好的,我来为您提供一个参考实现。
```c++
#include <iostream>
#include <vector>
template<typename T>
class Stack {
private:
std::vector<T> data;
public:
// 入栈
void push(T value) {
data.push_back(value);
}
// 出栈
T pop() {
if (data.empty()) {
throw std::out_of_range("Stack is empty");
}
T value = data.back();
data.pop_back();
return value;
}
// 栈顶元素
T top() const {
if (data.empty()) {
throw std::out_of_range("Stack is empty");
}
return data.back();
}
// 栈是否为空
bool empty() const {
return data.empty();
}
// 栈大小
size_t size() const {
return data.size();
}
};
int main() {
Stack<int> intStack;
intStack.push(1);
intStack.push(2);
intStack.push(3);
while (!intStack.empty()) {
std::cout << intStack.pop() << " ";
}
std::cout << std::endl;
Stack<std::string> stringStack;
stringStack.push("hello");
stringStack.push("world");
while (!stringStack.empty()) {
std::cout << stringStack.pop() << " ";
}
std::cout << std::endl;
return 0;
}
```
这里使用了 `std::vector` 作为栈的内部存储结构,并提供了常见的入栈、出栈、栈顶元素、栈是否为空、栈大小等操作。在测试代码中,我们分别创建了一个整型栈和一个字符串栈,并进行了一些基本操作的测试。
阅读全文