<C++学习十三>C++迭代器介绍
摘要: 本篇博客仅作为笔记,如有侵权,请联系,立即删除(网上找博客学习,然后手记笔记,因纸质笔记不便保存,所以保存到网络笔记)
迭代器简介:
(1)迭代器类似于指针类型,它也提供了对对象的间接访问。
(2)指针是C语言中就有的东西,迭代器是C++中才有的,指针用起来灵活高效,迭代器功能更丰富些。
(3)迭代器提供一个对容器对象或者string对象的访问方法,并且定义了容器范围。
begin end,前面的string和vector容器均有
标准容器迭代器的运算符:
*iter 返回迭代器iter所指元素的引用;
iter->men 解引用iter并获得该元素的名为 men的成员,相当于(*iter).men;
++iter 令iter指示容器的下一个元素
--iter 令iter指示容器的上一个元素
iter1 == iter2 如果两个迭代器指示的是同一个元素或者它指向同一个容器的尾后迭代器,则相等。
迭代器的类型
那些拥有迭代器的标准库类型都是使用:iterator和const_iterator来表示迭代器类型:
vector<int>::iterator it; //it能读写vector<int>的元素 vector<int>::const_iterator it; //it只能读vector<int>的元素,不可以修 //改vector<int>中的元素 string::iterator s; //s可以读写string对象中的元素。 string::const_iterator s; //s只可以读string对象中的元素,不可以修改 //string对象中的元素
注意;vector动态增长限制:
(1)不能在范围for循环中向vector对象添加元素
(2)任何一种可能改变vector容量的操作,比如push_back,都会使该vector对象的迭代器失效。
迭代器的运算:
iter + n;//迭代器加上一个整数值仍得到一个迭代器,迭代器指示的新位置向 //前移动了,指示器可能是容器的一个元素或者是尾部的下一个位置 iter - n;//相反,迭代器指示的位置向后移动了,指示可能是容器的一个元素或 //者是尾部的上一个位置 iter1 += n;//等价于iter1 + n iter1 -= n; //等价于iter - n iter1 - iter2;//两个迭代器的距离