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

本文提供了一个简单的STL迭代器实现示例,通过自定义_vector类来模拟STL中vector迭代器的工作原理,展示了如何创建迭代器、添加元素以及遍历vector。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值