- #pragma once
- #include <cstddef>
- #include<list>
- #include<memory> //allocator<T>
- #include<vector>
- using namespace std;
- template<class T,size_t N=10>
- class Array{
- T data[N];
- size_t count;
- public:
- Array(){count=0;}
- void push_back(const T& t){
- if(count<N)
- data[count++]=t;
- }
- void pop_back(){
- if(count>0)
- --count;
- }
- T* begin(){return data;}
- T* end(){return data+count;}
- };
- template<class T,template<class,size_t =5> class Seq>
- class Container{
- Seq<T> seq;
- public:
- T* end(){return seq.end();}
- T* begin(){return seq.begin();}
- void append(const T& t){seq.push_back(t);}
- };
- template<class T,template<class U,class=allocator<U>> class Seq>
- class Container2{
- Seq<T> seq;
- public:
- void push_back(const T& t){seq.push_back(t);}
- typename Seq<T>::iterator begin(){return seq.begin();}
- typename Seq<T>::iterator end(){return seq.end();}
- };
- #ifndef DEBUG
- #define DEBUG 1
- void excute(){
- Container<int,Array> container;
- container.append(1);
- container.append(2);
- int* p=container.begin();
- while(p!=container.end())
- cout<<*p++<<endl;
- Container2<int,vector> vContainer;
- vContainer.push_back(1);
- vContainer.push_back(2);
- for(vector<int>::iterator p=vContainer.begin();p!=vContainer.end();++p){
- cout<<*p<<endl;
- }
- }
- #endif