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

来源:互联网 发布:魔兽世界7.0优化 编辑:程序博客网 时间:2024/06/07 07:05
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.队列和优先队列支持的操作

         

        

  
原创粉丝点击