C++stack栈
C++ Stack(堆栈) 是一个容器类的改编,为程序员提供了堆栈的全部功能,——也就是说实现了一个先进后出(FILO)的数据结构
需要:#include <stack>
栈(stack)是限制插入和删除只能在一个位置上进行的线性表,该位置在表的末端,叫做栈顶。添加元素只能在尾节点后添加,删除元素只能删除尾节点,查看节点也只能查看尾节点。添加、删除、查看依次为入栈(push)、出栈(pop)、栈顶节点(top)。形象的说,栈是一个先进后出(LIFO)表,先进去的节点要等到后边进去的节点出来才能出来
stack类可以用任何顺序容器vector、list、deque实现。默认情况下,stack用deque实现
为了达到最佳性能,用deque或vector作为stack的基础容器
#include<iostream> #include <stack> #include <queue> #include <list> int main() { std::stack<int> deque_stack; //声明stack,默认以deque容器实现 std::stack<int, std::vector<int>> vector_stack; //声明stack,以vector容器实现 std::stack<int, std::list<int>> list_stack; //声明stack,以list容器实现 std::stack<int> stack; std::stack<int> stack2 = stack; //声明一个int类型的stack2,将stack的元素复制给stack2 std::stack<int> stack3(stack); //声明一个int类型的stack3,将stack的元素复制给stack3 bool b= stack.empty(); //判断是否为空 //若stack1为空,则返回true std::cout << b << std::endl; for (int i = 0; i < 5; ++i) { stack.push(i); //把数据放入栈顶 } int n=stack.size(); //stack当前存放的元素的个数 std::cout << n << std::endl; int x=stack.top(); //返回栈顶元素 //条件是stack不为空 std::cout << x << std::endl; stack.pop(); //删除stack栈顶元素 stack.emplace(20); //把数据放入栈顶 /* push() 实际上是调用的底层容器的push_back()函数,新元素的值是push函数参数的一个拷贝。 emplace() 实际上是调用的底层容器的emplace_back()函数,新元素的值是在容器内部就地构造的,不需要移动或者拷贝 */ stack.swap(stack2); //将stack和stack2交换 return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2019-08-25 qt5-透明
2019-08-25 电路分析-电阻