C++ STL 迭代器的简单模拟
时间:2010-10-01 来源:kanong
下面的代码只是在简单的模拟STL的迭代器的实现机制,当然具体的vector实现远比下面的复杂。
同时为了尽量的简单,我对很多细节的问题没有处理,通过这段代码只是想告诉大家:STL 迭代器的实现技巧。
#include<iostream> using namespace std; /* *开 发 者:卡农 *开发时间:2010-10-1 *描 述:vector迭代器的简单模拟 */ template<class T> class _vector{ public: typedef T* iterator;//迭代器就是在这里实现的 /* *构造一个vector *参数:n vector里面元素的数量 */ _vector(int n){ this->data=new T[n]; this->beginP=this->data; this->endP=this->data; } /* *添加一个元素到vector的末尾 *参宿:val 添加的元素的值 */ void push_back(T val){ *this->endP=val; this->endP++; } /* *得到一个迭代器 *返回:指向最后一个元素的迭代器 */ iterator begin(){ return this->beginP; } /* *得到一个迭代器 *返回:指向第一个元素的迭代器 */ iterator end(){ return this->endP; } //虚构函数 ~_vector(){ delete(this->data); } private: //我为了尽量的简单我屏蔽了默认构造函数,拷贝构造函数 , 赋值函数 _vector(){} _vector(const _vector<T> & other){} _vector & operator=(const _vector<T> &){} private: iterator beginP; //第一个元素 iterator endP; //尾部,也就是最后一个元素的下一个元素 T * data; }; //测试 int main(){ _vector<int> * obj=new _vector<int>(10); for(int i=0; i<5; i++){ obj->push_back(i+1); } //是不是STL的迭代器一模一样呀 _vector<int>::iterator iter=obj->begin(); while(iter!=obj->end()){ cout<<*iter++<<endl; } delete(obj); return 0; }
相关阅读 更多 +