用C++编写一个程序完成下列题目,利用类模板实现一个简单的堆栈,支持数据压栈(push)和弹栈(pop)操作,要求至少支持 int、float、double。
时间: 2024-03-23 15:41:51 浏览: 158
好的,以下是实现这个功能的 C++ 代码:
```cpp
#include <iostream>
#include <vector>
template<typename T>
class Stack {
private:
std::vector<T> data; // 用 vector 存储数据
public:
void push(T value) {
data.push_back(value); // 压栈操作
}
void pop() {
if (data.empty()) {
std::cout << "Stack is empty!" << std::endl;
} else {
data.pop_back(); // 弹栈操作
}
}
T top() {
if (data.empty()) {
std::cout << "Stack is empty!" << std::endl;
return T();
} else {
return data.back(); // 返回栈顶元素
}
}
};
int main() {
Stack<int> intStack;
Stack<float> floatStack;
Stack<double> doubleStack;
intStack.push(1);
intStack.push(2);
std::cout << "Top of intStack: " << intStack.top() << std::endl;
intStack.pop();
floatStack.push(1.1);
floatStack.push(2.2);
std::cout << "Top of floatStack: " << floatStack.top() << std::endl;
floatStack.pop();
doubleStack.push(1.11);
doubleStack.push(2.22);
std::cout << "Top of doubleStack: " << doubleStack.top() << std::endl;
doubleStack.pop();
return 0;
}
```
我们定义了一个类模板 `Stack`,代表一个堆栈。在类模板中,我们使用 `std::vector` 存储数据,并提供了 `push`、`pop` 和 `top` 三个方法。
在 `main` 函数中,我们分别定义了三个 `Stack` 类型的变量,并分别进行了 `push` 和 `pop` 操作,最后输出了栈顶元素。
这个程序可以输出以下结果:
```
Top of intStack: 1
Top of floatStack: 1.1
Top of doubleStack: 1.11
```
阅读全文