文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>C++ STL 迭代器的简单模拟

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;
}

 

 

相关阅读 更多 +
排行榜 更多 +
猎枪行动

猎枪行动

飞行射击 下载
导弹袭击

导弹袭击

飞行射击 下载
猫猫突围封锁要塞新手打法

猫猫突围封锁要塞新手打法

飞行射击 下载