(GeekBand)C++STL与范型编程(一)

迭代器

在这次的学习之前我并不了解迭代器的概念,在查阅相关资料后进行了一些了解。
迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针。因此C++的指针也是一种迭代器。
迭代器有各种不同的创建方法。程序可能把迭代器作为一个变量创建。一个STL容器类可能为了使用一个特定类型的数据而创建一个迭代器。作为指针,必须能够使用*操作符类获取数据。你还可以使用其他数学操作符如++。典型的,++操作符用来递增迭代器,以访问容器中的下一个对象。如果迭代器到达了容器中的最后一个元素的后面,则迭代器变成past-the-end值。使用一个past-the-end值得指针来访问对象是非法的,就好像使用NULL或为初始化的指针一样。
vector的迭代器可以这么实现(代码来自CSDN的专栏):

template   
class vector {  
private:  
    T* pbegin;  
    int n; //当前大小  
public:  
    vector() {  
        pbegin = new T[100]; //暂时先固定大小  
        n = 0;  
    }  
      
    T* begin() {  
        return pbegin;  
    }  
    void insert(T d){  
        pbegin[n++] = d;  
    }  
    typedef T* iterator; //vector的迭代器就是基础指针类型  
};  

访问vector的迭代器相当于通过指针访问。

vector a;  
    a.insert(1);  
    a.insert(2);  
    vector::iterator itra;  
    itra = a.begin();  
    printf("%d/n", *itra);   
    itra++;  
    printf("%d/n", *itra);  
    itra--; //基础指针类型都支持++,--,+,-等操作符  
    printf("%d/n", *itra);  

你可能感兴趣的:((GeekBand)C++STL与范型编程(一))