容器适配器
size_type //一种类型,足以保存当前类型的最大对象的大小
value_type //元素类型
container_type //实现适配器的底层容器类型
A a;
A a(c); //创建一个名为a的适配器,带有容器c的一个拷贝
a.empty(); //判定是否有元素
a.size(); //返回a中元素个数
swap(a, b); //交换a,b内容,但是a,b的类型要完全一样
a.swap(b);这些操作所有的容器适配器都支持的操作和类型
定义一个适配器
首先stack适配器: 要求,pop_back, push_back, back,可以用除了:array和forward_list
然后是queue: 要求,back, push_back, front, push_front可以用:list 和 deque构造不能基于vector
然后是priority_queue 要求,front, push_back, pop_back操作之外还要随机访问可以用: vector 和 deque
不能用list
栈适配器
#include<iostream>
#include<stack>
using namespace std;
int main()
{
stack<int> intStack; //空栈
//填满栈
for(size_t ix=0 ; ix != 10 ; ++ix)
intStack.push(ix); //intStack保存0到9十个数
while(!intStack.empty())
{
int value=intStack.top();
//使用栈顶值的代码
cout<<value<<"\t";
intStack.pop(); //弹出栈顶元素,继续循环
}
return 0;
}
输出为:9 8 7 6 54 3 2 1 0
PS:表达式求值的程序估计得等一等了,马上要考试了,6级- -,等考试过了,补上
本文深入探讨了容器适配器的概念、关键属性及其实现方式,包括size_type、value_type、container_type等核心概念,并通过实例展示了如何定义和使用栈适配器。文章进一步阐述了适配器在不同容器上的适用场景,如栈、队列和优先队列的特殊需求,并提供了实际代码示例,以便读者理解其工作原理和应用场景。
291

被折叠的 条评论
为什么被折叠?



