C++之迭代器

迭代器的概念

迭代器是用来访问string对象或vector对象的元素的,相似于下标运算和指针。数组

其对象是容器中的元素或string对象中的字符;spa

使用迭代器能够访问某个元素,迭代器也能从一个元素移动到另一个元素。3d

迭代器的使用

不一样于指针,获取迭代器不是使用取地址符,有迭代器的类型同时拥有返回迭代器的成员;指针

好比,这些类型拥有名为begin和end的成员,begin成员负责返回指向第一个元素(或第一个字符)的迭代器,end成员则负责返回指向容器“尾元素的下一个位置”的迭代器;code

若是迭代器为空,则begin和end返回的是同一个迭代器;对象

标准容器迭代器的运算符blog

和指针相似,也能经过解引用迭代器来获取它所指向的元素,执行解引用的迭代器必须合法并确实指向着某个元素。字符串

string  s("some String"); if (s.begin() !=s.end() )  //确保s非空
{ auto it=s.begin(); //it 表示s的第一个字符
   *it=toupper(*it); }

迭代器类型

 begin与end运算符string

结合解引用与成员访问操做it

 解引用迭代器能够得到迭代器所指向的对象(相似与指针)。例如:若it是Vector对象的迭代器,

检查其元素是否为空,只需检查it所指向的字符串是否为空;

(*it).empty();   // it->empty();

某些对vector对象的操做会使迭代器失效

但凡是使用了迭代器的循环体,都不要向迭代器所属的容器添加元素;

迭代器运算

 

迭代器的算术运算

能够令迭代器和一个整数值相加(或相减),其返回值是向前(或向后)移动了若干个位置的迭代器。

auto mid = vi.begin() + vi.size() / 2; //vi.size()=10,则mid指向元素是vi[10]
if(it<mid) //处理vi前半部分的元素

使用迭代器运算(二分搜索)

代码

指针也是迭代器

指向数组元素的指针拥有更多功能

相关文章
相关标签/搜索