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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值