【足迹C++primer】29、容器适配器

本文深入探讨了容器适配器的概念、关键属性及其实现方式,包括size_type、value_type、container_type等核心概念,并通过实例展示了如何定义和使用栈适配器。文章进一步阐述了适配器在不同容器上的适用场景,如栈、队列和优先队列的特殊需求,并提供了实际代码示例,以便读者理解其工作原理和应用场景。

容器适配器

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级- -,等考试过了,补上









评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值