网站平台方案,定制的网站源码,网站制作青岛公司,影视会员网站怎么建设前言 vector容器的数据结构原型是顺序表#xff0c;它很好的实现了顺序表的功能#xff0c;大大方便了编程。好了#xff0c;现在假设有天我又想用栈#xff0c;那么有没有栈对应的容器呢#xff1f;很遗憾#xff0c;木有。但基于“栈”可以由顺序表或者链表实现这一特性…前言 vector容器的数据结构原型是顺序表它很好的实现了顺序表的功能大大方便了编程。好了现在假设有天我又想用栈那么有没有栈对应的容器呢很遗憾木有。但基于“栈”可以由顺序表或者链表实现这一特性C提供了stack给我们使用来解决栈的实现这个问题。stack可不是类也不是容器那它是什么呢它就是本文要讨论的一个新的类型 --- 容器适配器。 什么是容器适配器 容器适配器是对容器的一种再封装。不同的容器适配器提供不同的函数使容器的功能得到全新的特定的扩展。但它和容器的容器是有区别的容器适配器不支持迭代器和算法使用起来限制比较大。标准库提供了三种容器适配器queuestack和priority_queue。 容器适配器怎么用 一般来说先定义一个容器接着给该容器配备相应的容器适配器然后就可以使用该容器适配器特有的函数处理数据了。这里可以省略掉容器定义那一步容器适配器将自动分配容器。下面这个代码示范了栈容器适配器stack的用法。我们先定义一个vector容器接着给该vector容器分配stack容器适配器然后使用栈容器提供的函数自顶向下的输出所有元素解决了前言所提出的问题 1 #include iostream2 #include vector3 // 使用容器适配器必须包含相应的头文件4 #include stack5 6 using namespace std;7 8 int main()9 {
10 vectorint v;
11
12 /*
13 * 将0-9存入vector容器并打印
14 */
15 for (int i0; i10; i)
16 v.push_back(i);
17 cout 输出Vector容器 endl;
18 for (vectorint::iterator it v.begin(); it ! v.end(); it)
19 cout *it ;
20 cout endl endl;
21
22 // 给容器v配上容器适配器
23 stack int, vectorint s(v);
24 /*
25 * 使用栈容器适配器stack提供的函数处理数据
26 */
27 cout 自顶向下输出栈( stack容器适配器 ) endl;
28 while (!s.empty()) {
29 cout s.top() ;
30 s.pop();
31 }
32 cout endl;
33
34 return 0;
35 } 运行结果 说明 1. 容器适配器只适用于一定的容器而不是所有容器。 2. 容器适配器的函数实现其实也是基于其参数容器的函数而不是自己重新定义的。