#include <iostream>
using namespace std;
template<class T>
class Arry{
T *p;
const int length;
public:
Arry(int _n):length(_n){ p =new T[length];}
T* begin(){ return p;}
T* end(){ return p+length;}
int size() { return length;}
T& operator [](int index){ return p[index];}
void clear(){ delete []p;} //该对象不再使用请释放内存
~Arry(){ delete []p;}
struct iterator{
T *q;
iterator(){ q = NULL;}
iterator(T *p){ q = p;}声明类对象的同时进行初始化
T* operator ++(){ ++q; return q;}//自加,只有前++
T* operator --(){ --q; return q;}//自减,只有前--
iterator& operator = (T* p){ q = p; return *this;}
bool operator != (T* p){ return q != p;}
bool operator == (T* p){ return q == p;}
T operator *(){ return *q;}
};
};
int main(){
Arry<int> p(10);
int i = 0;
int *t = NULL;
Arry<int>::iterator it;
for(it = p.begin(); it != p.end(); ++it, ++i){
p[i] = i, cout << *it << " ";
}
puts("\n\n 困扰我已久的声明类对象的同时进行初始化终于解决了\n\n");
for(Arry<int>::iterator it = p.begin(); it != p.end(); ++it, ++i){
p[i] = i, cout << *it << " ";
}
return 0;
}
/*
不可变长度数组类,虽然看上去没什么用,但却让我开始了解迭代器
*/
STL_迭代器_不可变长度数组类
最新推荐文章于 2023-12-31 21:21:31 发布