C++ STL 迭代器的简单模拟

来源:互联网 发布:mac重命名的快捷键 编辑:程序博客网 时间:2024/05/01 06:37

下面的代码只是在简单的模拟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; }


转自:http://www.cnblogs.com/kanong/archive/2010/10/01/1840640.html 

原创粉丝点击