1.stack概述
stack类模板(栈)可以实例化一个栈容器(后进先出,LIFO)或栈对象。使用push()函数可以将任意数量的元素置入stack(栈)中,使用pop()函数可以将元素依次反序地从栈中移除。在STL中,要使用stack,则必须要包含头文件<stack>。在头文件中,stack类模板的定义如下:
图3-43 例3-42的执行效果
类模板声明中的第1个参数代表元素型别;第2个参数用来定义stack内部存放元素所用的实际容器,其默认值为deque。选择deque(没有选择vector)的目的主要是因为从deque类型容器中移除元素时会释放内存,并不必在重新分配内存时复制所有其他元素。例如,
stack型容器可以将各项操作转化为内部的对应调用。实际上可以使用任何序列式容器(vector,list)支持stack,该容器仅需要支持back()、push_back()、pop_back()等操作即可。
2.核心成员函数
stack的核心接口是3个成员函数:push()、top()和pop()。push()函数将元素压入stack中,pop()函数从stack中移除元素,top()函数返回栈内的下一个元素。(www.xing528.com)
push()函数和pop()函数并无返回值,top()函数却返回栈内的下一个元素,但不移除该元素。top()函数和pop()存在一个问题:当栈中为空时,调用该两个函数会导致失败,前提是stack必须非空。
stack类模板为便于操作和访问,还提供了其余几个函数:size()、empty()、getallocator()等。
3.实例
例3-43
例3-43的执行效果如图3-44所示。
图3-44 例3-43的执行效果
总结
除使用STL库定义的类模板之外,程序员还可以根据实际情况创建自定义的stack类模板。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。