#include <utility>
template<class T,size_t N=5>
struct myblock
{
typedef T value_type;
typedef value_type* pointer;
typedef const value_type * const_pointer;
typedef value_type & reference;
typedef const value_type* const_reference;
typedef ptrdiff_t dirrerence_type;
typedef size_t size_type;
typedef pointer Interator;
typedef const_pointer const_iterator;
myblock(){memset(Data,0,sizeof(T)*N);}
Interator begin(){return &Data[0];}
Interator end(){return Data+N;};
const_iterator begin() const{return Data;}
const_iterator end()const{return Data+N;}
reference operator[] (size_type n){return Data[n];}
const_reference operator[](size_type n) const{return Data[n];}
size_type size() const { return N;}
private:
T Data[N];
};
int main()
{
myblock<int> test;
myblock<int>::Interator itor=test.begin();
int i=0;
for(;itor!=test.end();itor++)
{
;//*itor=i++;
}
itor=test.begin();
for(;itor!=test.end();itor++)
{
;//printf("%d",(*itor));
}
char c='b';
char *p=&c;
test[3]=c;
char d=test[3];
return 0;
}