C++语法基础--顺序容器(五)--容器适配器-- queue,priority_queue,stack

1.标准库提供的三种顺序容器适配器:
    * queue,priority_queue,stack
    *相关的头文件为:
      #include<stack>
      #include<queue>

 
2.容器适配器的作用:
  可以使一种已存在的容器类型采用令一种不同的抽象类型的工作方式实现。
   eg:
      假如一种电器只有两个插脚,但所有的插座都是三个孔的,这时,便需要一个转换器(适配器)把三个孔的插座换成两个孔的。

      关一适配器的理解,详见C++设计模式---适配器模式   


3.适配器通用的操作和类型
  
        




4.适配器的初始化化
 
   以stack为例:
        原型:
         explicit stack ( const Container& ctnr = Container() );

  eg:
      deque<int> deq (3,1);  
  // 1,1,1
      vector<int> vec (2,2);   // 2,2
      stack<int> stk1;             
      stack<int> stk2 (deq);   
      stack<int,vector<int> > stk3;  
      stack<int,vector<int> > stk4 (vec);


5.适配器的约束条件
  stack:可以建立在vector,list,deque容器上
  queue:只能建立在list容器上,因为要求其基础容器必须提供push_front运算
  priority_queue:可以建立在vector或deque容器上,因为要求其基础容器提供随机访问功能、





6.适配器的关系运算
  *要求基础元素提供=,<操作符
  *第一对不相等的元素决定两者的大小关系


7.栈适配器支持的操作

   

      

     

 
    原型:
       bool empty ( ) const;
       size_type size ( ) const;
       value_type& top ( );
       const value_type& top ( ) const
       void push ( const T& x );
       void pop ( );


   eg:
        stack<int> stk;
 stk.push(1);
 stk.push(2);
 stk.push(3);
 cout<<stk.size()<<endl;
//3
 while(!stk.empty())
 {


 cout<<stk.top()<<'\t';//3 2 1
 stk.pop();
 }


      
   
8.默认情况下,stack适配器建立在deque容器上


9.优先队列(priority_queue)允许用户为队列中存储的元素设置优先级,进入队列的元素将会放在比它优先级低的元素前面,标准库默认使用元素的<操作符来确定它们之间的优先级关系


10.队列和优先队列支持的操作

         

        

  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值