迭代器
在这次的学习之前我并不了解迭代器的概念,在查阅相关资料后进行了一些了解。
迭代器提供对一个容器中的对象的访问方法,并且定义了容器中对象的范围。迭代器就如同一个指针。因此C++的指针也是一种迭代器。
迭代器有各种不同的创建方法。程序可能把迭代器作为一个变量创建。一个STL容器类可能为了使用一个特定类型的数据而创建一个迭代器。作为指针,必须能够使用*操作符类获取数据。你还可以使用其他数学操作符如++。典型的,++操作符用来递增迭代器,以访问容器中的下一个对象。如果迭代器到达了容器中的最后一个元素的后面,则迭代器变成past-the-end值。使用一个past-the-end值得指针来访问对象是非法的,就好像使用NULL或为初始化的指针一样。
vector的迭代器可以这么实现(代码来自CSDN的专栏):
template <class T>
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<int> a;
a.insert(1);
a.insert(2);
vector<int>::iterator itra;
itra = a.begin();
printf("%d/n", *itra);
itra++;
printf("%d/n", *itra);
itra--; //基础指针类型都支持++,--,+,-等操作符
printf("%d/n", *itra);
网友评论