C++ stack使用方法详细介绍 您所在的位置:网站首页 stack的函数 C++ stack使用方法详细介绍

C++ stack使用方法详细介绍

2023-09-23 21:51| 来源: 网络整理| 查看: 265

更多关于STL文章——STL学习笔记

容器适配器 stack

Class stack 实现出一个 stack(也称为LIFO,后进先出)。你可以使用 push() 将任意数量的元素放入 stack,也可以使用 pop() 将元素依其插入的相反次序从容器中移出(此即所谓“后进先出[LIFO]”)。

class stack 定义如下:

namespace std{ template class stack; }

第一个 template 参数代表元素类型。带有默认值的第二个 template 参数用来定义 stack 内部存放元素的实际容器,默认为 deque。之所以选择 deque 而非 vector ,是因为 deque 移除元素时会释放内存,并且不必在重分配,并且不必在重分配时复制全部元素。

Stack 的实现中只是很单纯地把各项操作转化为内部容器的对应调用。你可以使用任何sequence容器支持 stack,只要它们提供以下成员函数:back()、push_back() 和 pop_back()。

template class stack{ public: typedef typename Sequence::value_type value_type; typedef typename Sequence::reference reference; typedef typename Sequence::const_reference const_reference; typedef typename Sequence::size_type size_type; typedef Sequence container_type; } 类型名称定义value_type元素的类型reference用以指向元素之reference类型const_reference用以指向只读元素之reference类型size_type不带正负号的整数类型,用来表现大小container_type内部容器的类型 构造

explicit stack (const container_type& ctnr); //构造一个stack,其内部容器被初始化为ctnr的副本。 explicit stack (container_type&& ctnr = container_type()); //构造一个stack,其内部容器通过移动构造来获取ctnr的值。 template explicit stack (const Alloc& alloc); //构造一个stack,其内部容器使用alloc作为参数构造。 template stack (const container_type& ctnr, const Alloc& alloc); //构造一个stack,其内部容器使用cntr和alloc作为参数构造。 template stack (container_type&& ctnr, const Alloc& alloc); //同上,移动构造 template stack (const stack& x, const Alloc& alloc); //构造一个stack,其内部容器使用x的内部容器作为第一个参数,而alloc作为第二个来构造。 template stack (stack&& x, const Alloc& alloc); //同上,移动构造

#include #include #include #include using namespace std; int main() { deque mydeck (3,100); //创建一个deque含3个100 list mylist (2,200); //创建一个list含2个200 stack first; //创建一个空的堆栈 stack second (mydeck); //用mydeck的拷贝作为堆栈的初始值 //第二个参数模板默认即为 deque,因此可以不写。 stack third; //空堆栈,列表作为底层容器 stack fourth (mylist); //用mylist的拷贝作为堆栈的初始值 cout if(i=='(') //如果等于 ( 进栈 buf.push(i); else if(i==')'){ //如果等于 ) 进行判断 if(!buf.empty()) //如果栈不为空,将最后一个进栈的 ( 弹出,说明该括号已经匹配 buf.pop(); else{ //如果此时栈为空,说明不匹配,直接输出NO 退出 cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有