C++ STL中使用STL stack类

C++ STL中使用STL stack类

STL stack 是一个模板类,要使用它,必须包含头文件。它是一个泛型类,允许在顶部插入
和删除元素,而不允许访问中间的元素。从这种角度看, std::stack 的行为很像一叠盘子。

在有些 STL 实现中, std::stack 的定义如下:

template <
class elementType,
class Container=deque<Type>
> class stack;

参数 elementType 是 stack 存储的对象类型。第二个模板参数 Container 是 stack 使用的默认底层容
器实现类。 stack 默认在内部使用 std::deque 来存储数据, 但可指定使用 vector 或 list 来存储数据。 因此,
实例化整型栈的代码类似于下面这样:

std::stack <int> numsInStack;

要创建存储类(如 Tuna)对象的栈,可使用下述代码:

std::stack <Tuna> tunasInStack;

要创建使用不同底层容器的栈,可使用如下代码:

std::stack <double, vector <double>> doublesStackedInVec;

程序清单 24.1 演示了各种实例化方式。

0: #include <stack>
1: #include <vector>
2:
3: int main ()
4: {
5: using namespace std;
6:
7: // A stack of integers
8: stack <int> numsInStack;
9:
10: // A stack of doubles
11: stack <double> dblsInStack;
12:
13: // A stack of doubles contained in a vector
14: stack <double, vector <double>> doublesStackedInVec;
15:
16: // initializing one stack to be a copy of another
17: stack <int> numsInStackCopy(numsInStack);
18:
19: return 0;
20: }

分析:
该示例没有输出, 但演示了如何实例化 STL 模板 stack。 第 8 行和第 11 行实例化了两个 stack 对象,
分别用于存储类型为 int 和 double 的元素。第 14 行也实例化了一个用于存储 double 元素的 stack,但
将第二个模板参数( stack 在内部使用的集合类)指定为 vector。如果没有指定第二个模板参数, stack
将自动使用默认的 std::deque。最后,第 17 行表明,可使用一个 stack 对象的拷贝来创建另一个 stack
对象。

对C++编程技术感兴趣的朋友请点击这里:零声学院C/C++服务器课程

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值