迭代器

迭代器是C++中非常重要的结构,它是遍历不同容器的利刃!比如STL就是使用迭代器完成对list,vector,deque,set,map等容器元素的访问。迭代器简单来说可以看作指针,但不仅仅是指针,实际上是基于指针建立起来的类。其本质是对象!

以链表linklist类为例,设计它的一个迭代器:

template<typename T>
class linklist{
private:
node<T> *head;
node<T> *before;
int size;
public:
	linklist(){head=NULL;before=NULL;size=0;}
void addfirst(T ele);//将元素添加到链表头
void addlast(T ele);//将元素添加到链表尾
T getfirst();//返回链表头元素
T getlast();//返回链表尾元素
T removefirst();//删除链表头元素
T removelast();//删除链表尾元素
void add(T ele);//将一个新元素附加到列表表尾
void add(int index,T ele);//将一个新元素附加到列表指定位置
void clear();//删除列表所有元素
bool con(T ele);//判断元素是否存在于链表
T get(int index);//返回指定位置处元素
int get1stindex(T ele);//返回列表里第一次匹配的下标
bool empty();//判断空
int getlastindex(T ele);//返回列表里最后一次匹配的下标
void remove(T ele);//删除链表指定元素
int getsize();//返回链表元素数目
T remove(int index);//删除链表指定位置元素并返回
T set(int index,T ele);//设置index为新值ele,并返回旧值
iterator<T> begin(){return iterator<T>(head);}//从链表获取迭代器,利用链表头获取迭代器开始
iterator<T> end(){return iterator<T>(before->next);}//从链表获取迭代器,利用链表尾获取迭代器结束</span>
};
迭代器类实现:

template<typename T>
class iterator{
private:
node<T> *p;
public:
	iterator(node<T> *p){this->p=p;}
    iterator operator++();
      T operator*();
    bool operator==(iterator<T>&it1);
    bool operator!=(iterator<T>&it1);};
	template<typename T>
	iterator& iterator<T>::operator++(){
	p=p->next;
	return (*this);}
	template<typename T>
	T iterator<T>::operator*(){
		return p->ele;}
	template<typename T>
	bool iterator<T>::operator==(iterator<T>&it1){
		if(p==it1.p) return true;
		else return false;}
	template<typename T>
		bool iterator<T>::operator!=(iterator<T>&it1){
		return !operator==();}
linklist类定义了begin().end()函数给迭代器返回,这样迭代器既可以对链表进行元素遍历了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值