免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4236 | 回复: 6
打印 上一主题 下一主题

[C++] 容器适配器到底干嘛用的?这样写不更简洁么。。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-10-04 12:04 |只看该作者 |倒序浏览
  1. #include<iostream>
  2. #include<queue>
  3. #include<list>
  4. using namespace std;
  5. template<class T>
  6. void print(T &q)  
  7. {
  8.         while(!q.empty()) {
  9.             cout<<q.front()<<" ";
  10.           q.pop();       //出队列
  11.         }   
  12.    cout<<endl;
  13. }

  14. int main()
  15. {
  16.   queue< int,list<int> > list_q;  //容器适配器转换顺序容器
  17.   for(int i=1;i<=4;i++)
  18.      list_q.push(i);
  19.   
  20.   cout<<"The first element is : "<<list_q.front()<<endl;
  21.   cout<<"The last element is : "<<list_q.back()<<endl;   
  22.   cout<<"The queue is : "<<endl;
  23.   print(list_q);  

  24.   return 0;
  25. }
复制代码
容器适配器到底干嘛用的? queue< int,list<int> > list_q;  换成  queue<int>  list_q;  不更简洁么?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
2 [报告]
发表于 2012-10-04 12:18 |只看该作者
这个例子太不生动了.

比如你想用: "栈" 这个数据结构, 你是重新去写一个呢? 还是用你已经拥有的"vector/list"去实现这个"栈"? 这就是适配器, 用"vector"的功能去实现"stack"的接口.

论坛徽章:
0
3 [报告]
发表于 2012-10-04 12:21 |只看该作者
回复 2# linux_c_py_php


    queue< int,list<int> > list_q;  是不是这样理解:定义一个list容器但具有queue功能?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
4 [报告]
发表于 2012-10-04 12:23 |只看该作者
是希望实现一个队列, 但你懒得写代码, 所以你打算用链表的功能快速的去实现这个队列.

cppfans6 发表于 2012-10-04 12:21
回复 2# linux_c_py_php

论坛徽章:
0
5 [报告]
发表于 2012-10-04 12:30 |只看该作者
回复 4# linux_c_py_php


    懒得写代码? queue<int>  list_q;   这不更简单?
用链表的功能快速的去实现这个队列?就是队列有链表的功能了?

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
6 [报告]
发表于 2012-10-04 12:34 |只看该作者
本帖最后由 linux_c_py_php 于 2012-10-04 12:35 编辑

孺子不可教也, 几岁开始玩电脑的?

template <class T, class Adpter = vector<T>>
class queue;

懂了吗, 你用的queue的模板参数有个默认值, 你什么都不写就是用vector.

PS:我不知道默认是什么, 自己去看queue这个头文件, 让我肯定不能用vector, 不适合queue.

论坛徽章:
0
7 [报告]
发表于 2012-10-04 12:46 |只看该作者
回复 6# linux_c_py_php


    哦,默认类型参数,这样说就知道了,谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP