首页 理论教育 C++STL精解:栈类模板

C++STL精解:栈类模板

时间:2023-10-25 理论教育 版权反馈
【摘要】:使用push()函数可以将任意数量的元素置入stack(栈)中,使用pop()函数可以将元素依次反序地从栈中移除。实际上可以使用任何序列式容器支持stack,该容器仅需要支持back()、push_back()、pop_back()等操作即可。图3-44 例3-43的执行效果总结除使用STL库定义的类模板之外,程序员还可以根据实际情况创建自定义的stack类模板。

C++STL精解:栈类模板

1.stack概述

stack类模板(栈)可以实例化一个栈容器(后进先出,LIFO)或栈对象。使用push()函数可以将任意数量的元素置入stack(栈)中,使用pop()函数可以将元素依次反序地从栈中移除。在STL中,要使用stack,则必须要包含头文件<stack>。在头文件中,stack类模板的定义如下:

978-7-111-51399-5-Chapter03-211.jpg

978-7-111-51399-5-Chapter03-212.jpg

图3-43 例3-42的执行效果

类模板声明中的第1个参数代表元素型别;第2个参数用来定义stack内部存放元素所用的实际容器,其默认值为deque。选择deque(没有选择vector)的目的主要是因为从deque类型容器中移除元素时会释放内存,并不必在重新分配内存时复制所有其他元素。例如,

978-7-111-51399-5-Chapter03-213.jpg

stack型容器可以将各项操作转化为内部的对应调用。实际上可以使用任何序列式容器(vector,list)支持stack,该容器仅需要支持back()、push_back()、pop_back()等操作即可。

978-7-111-51399-5-Chapter03-214.jpg

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

978-7-111-51399-5-Chapter03-215.jpg

例3-43的执行效果如图3-44所示。

978-7-111-51399-5-Chapter03-216.jpg

图3-44 例3-43的执行效果

总结

除使用STL库定义的类模板之外,程序员还可以根据实际情况创建自定义的stack类模板。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈