下面的代码只是在简单的模拟STL的迭代器的实现机制,当然具体的vector实现远比下面的复杂。
|
#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