对vector进行封装,实现一个栈; 即:完成如下设计 template< class T > class stack { vector<T> data; ........ }
时间: 2024-10-29 09:18:28 浏览: 16
对`vector`进行封装创建一个栈(Stack),可以按照以下步骤进行设计:
```cpp
template <class T>
class Stack {
private:
vector<T> data; // 使用vector作为底层存储
public:
// 构造函数
Stack() {}
// 析构函数,释放资源
~Stack() {}
// 入栈操作(压入元素)
void push(const T& item) {
data.push_back(item);
}
// 出栈操作(弹出顶部元素并返回其值)
T pop() {
if (isEmpty()) {
throw runtime_error("Stack is empty");
}
T top = data.back(); // 获取最后一个元素
data.pop_back(); // 删除最后一个元素
return top;
}
// 查看栈顶元素但不移除
T top() const {
if (isEmpty()) {
throw runtime_error("Stack is empty");
}
return data.back();
}
// 判断栈是否为空
bool isEmpty() const {
return data.empty();
}
// 返回栈的大小
size_t size() const {
return data.size();
}
// 清空栈
void clear() {
data.clear();
}
};
```
在这个设计中,`push()`用于添加元素到栈顶,`pop()`用于移除并返回栈顶元素,`top()`查看但不移除栈顶元素,`isEmpty()`检查栈是否为空,`size()`获取当前栈的元素数量,`clear()`清空所有元素。
阅读全文