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

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

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

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


3.适配器通用的操作和类型
  
        C++语法基础--顺序容器(五)--容器适配器-- queue,priority_queue,stack_第1张图片




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

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


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





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


7.栈适配器支持的操作

   

      C++语法基础--顺序容器(五)--容器适配器-- queue,priority_queue,stack_第2张图片

     

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


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


 cout<//3 2 1
 stk.pop();
 }


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


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


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

         

        C++语法基础--顺序容器(五)--容器适配器-- queue,priority_queue,stack_第3张图片

  

你可能感兴趣的:(c++语法基础总结笔记,C++语法基础,容器适配器--,queue,priority_queue,stack)