64,647
社区成员
发帖
与我相关
我的任务
分享
template <class T, size_t N>
struct block {
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 diference_type;
typedef size_t size_type;
typedef pointer iterator;
typedef const_pointer const_iterator;
iterator begin() { return data; };
iterator 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; };
T data[N];
};
block<int, 10> A;
for (int i = 0; i < 10; i++)
{
A[i] = i;
}
//模板中并没有对++ 及*操作符重载,为什么下面的运行没有问题??
//系统是如何处理的???
block<int, 10>::iterator iter;
for (iter = A.begin(); iter != A.end(); ++iter)
{
cout << *iter << " ";
}