当前位置:   article > 正文

【5】容器适配器_简述容器适配器包含哪些,简述他们可以封装哪些序列性容器,且说明不能封装的原因

简述容器适配器包含哪些,简述他们可以封装哪些序列性容器,且说明不能封装的原因

【1】容器适配器

容器适配器(container adapter): 包括栈,队列和优先级队。

适配器并不独立,它依附在一个顺序容器上。例如,要声明一个用矢量实现的字符型堆栈,声明如下:
    stack<vector<char>> sk;
然后适配器可以象顺序容器一样使用,但没有自己的构造和析构函数,而是使用其实现类(如vector)的构造函数和析构函数。

【2】栈

栈并不独立,它依附在一个顺序容器上。栈(stack)可用vector或deque为基础。声明一个用矢量实现的字符型堆栈,格式如下:
    stack<vector<char>> sk;

  1. #include<iostream>
  2. #include<stack>
  3. #include<vector>
  4. using namespace std;
  5. int main(){
  6. const int size=10;
  7. int i,ia[10]={0,1,2,3,4,5,6,7,8,9};
  8. stack<int,vector<int> > intvestack;
  9. for(i=0;i<size;i++) intvestack.push(ia[i]);
  10. while(intvestack.empty()==false){
  11. cout<< intvestack.top()<<'\t';
  12. intvestack.pop();
  13. }
  14. cout<<endl;
  15. return 0;
  16. }

【2】队列

默认以deque为基础。

  1. #include<iostream>
  2. #include<queue>
  3. using namespace std;
  4. int main(){
  5. const int size=10;
  6. int i,ia[10]={0,1,2,3,4,5,6,7,8,9};
  7. queue<int> intque;
  8. for(i=0;i<size;i++) intque.push(ia[i]);
  9. while(intque.empty()==false){
  10. cout<< intque.front()<<'\t';
  11. intque.pop();
  12. }
  13. cout<<endl;
  14. return 0;
  15. }

【3】优先级队列

优先级队列(priority_queue)适配器用以实现优先级队列。

元素插入是自动按优先级顺序插入,使最高优先级元素首先从优先级队列中取出。

常用矢量为基础容器。默认时优先级队列priority_queue用vector为基础数据结构。

  1. #include<iostream>
  2. #include<queue>
  3. #include<functional>
  4. using namespace std;
  5. int main(){
  6. priority_queue<int> prioque;
  7. //实例化存放int值的优先级队列,并用deque作为基础数据结构
  8. prioque.push(7);//压入优先级队列
  9. prioque.push(12);
  10. prioque.push(9);
  11. prioque.push(18);
  12. cout<<"从优先级队列中弹出"<<endl;
  13. while(!prioque.empty()){
  14. cout<<prioque.top()<<'\t';//取最高优先级数据
  15. prioque.pop();//弹出最高优先级数据
  16. }
  17. cout<<endl;
  18. return 0;
  19. }

参考教程http://www.weixueyuan.net/view/5892.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/197920
推荐阅读
相关标签
  

闽ICP备14008679号