template

  1. #pragma once
  2. #include <cstddef>
  3. #include<list>
  4. #include<memory>  //allocator<T>
  5. #include<vector>
  6. using namespace std;
  7. template<class T,size_t N=10>
  8. class Array{
  9.     T data[N];
  10.     size_t count;
  11. public:
  12.     Array(){count=0;}
  13.     void push_back(const T& t){
  14.         if(count<N)
  15.             data[count++]=t;
  16.     }
  17.     void pop_back(){
  18.         if(count>0)
  19.             --count;
  20.     }
  21.     T* begin(){return data;}
  22.     T* end(){return data+count;}
  23. };
  24. template<class T,template<class,size_t =5> class Seq>
  25. class Container{
  26.     Seq<T> seq;
  27. public
  28.     T* end(){return seq.end();}
  29.     T* begin(){return seq.begin();}
  30.     void append(const T& t){seq.push_back(t);}  
  31. };
  32. template<class T,template<class U,class=allocator<U>> class Seq>
  33. class Container2{
  34.     Seq<T> seq;
  35. public:
  36.     void push_back(const T& t){seq.push_back(t);}
  37.     typename Seq<T>::iterator begin(){return seq.begin();}
  38.     typename Seq<T>::iterator end(){return seq.end();}
  39. };
  40. #ifndef DEBUG
  41. #define DEBUG 1
  42. void excute(){
  43.     Container<int,Array> container;
  44.     container.append(1);
  45.     container.append(2);
  46.     int* p=container.begin();
  47.     while(p!=container.end())
  48.         cout<<*p++<<endl;
  49.     Container2<int,vector> vContainer;
  50.     vContainer.push_back(1);
  51.     vContainer.push_back(2);
  52.     for(vector<int>::iterator p=vContainer.begin();p!=vContainer.end();++p){
  53.         cout<<*p<<endl;
  54.     }
  55. }
  56. #endif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值