C++代码实现stack功能,具体代码如下:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <stdexcept> // for std::out_of_range
template <typename T>
class Stack {
private:
std::vector<T> elements; // 底层容器,用于存储栈中的元素
public:
// 默认构造函数
Stack() = default;
// 析构函数(虽然在这个例子中不是必需的,但良好的实践是总是定义它)
~Stack() = default;
// 禁用拷贝构造函数和赋值运算符,以防止不必要的拷贝
Stack(const Stack&) = delete;
Stack& operator=(const Stack&) = delete;
// 检查栈是否为空
bool isEmpty() const {
return elements.empty();
}
// 获取栈的大小
size_t size() const {
return elements.size();
}
// 向栈顶添加元素
void push(const T& item) {
elements.push_back(item);
}
// 从栈顶移除元素
void pop() {
if (isEmpty()) {
throw std::out_of_range("Stack<>::pop(): empty stack");
}
elements.pop_back();
}
// 获取栈顶元素的引用
T& top() {
if (isEmpty()) {
throw std::out_of_range("Stack<>::top(): empty stack");
}
return elements.back();
}
// 获取栈顶元素的const引用(用于不修改栈顶元素的情况)
const T& top() const {
if (isEmpty()) {
throw std::out_of_range("Stack<>::top() const: empty stack");
}
return elements.back();
}
};
// 示例用法
int main() {
Stack<int> intStack;
// 向栈中添加元素
intStack.push(10);
intStack.push(20);
intStack.push(30);
// 输出栈顶元素
std::cout << "Top element: " << intStack.top() << std::endl;
// 移除栈顶元素
intStack.pop();
// 输出新的栈顶元素
std::cout << "Top element after pop: " << intStack.top() << std::endl;
// 检查栈是否为空
std::cout << "Is stack empty? " << (intStack.isEmpty() ? "Yes" : "No") << std::endl;
// 获取栈的大小
std::cout << "Stack size: " << intStack.size() << std::endl;
getchar();
return 0;
}
标签:std,功能,elements,const,C++,Stack,push,stack
From: https://blog.csdn.net/qq_38556796/article/details/143183493