0
点赞
收藏
分享

微信扫一扫

C++之迭代器


迭代器的概念

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

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

使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素。

迭代器的使用

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

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



C++之迭代器_迭代器


如果迭代器为空,则begin和end返回的是同一个迭代器;

标准容器迭代器的运算符



C++之迭代器_开发语言_02


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


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


迭代器类型

 begin与end运算符



C++之迭代器_迭代器失效_03




C++之迭代器_开发语言_04


结合解引用与成员访问操作

 解引用迭代器可以获得迭代器所指向的对象(类似与指针)。例如:若it是Vector对象的迭代器,

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


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


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

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

迭代器运算

 



C++之迭代器_c++_05


迭代器的算术运算

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


auto mid = vi.begin() + vi.size() / 2; //vi.size()=10,则mid指向元素是vi[10]


if(it<mid) //处理vi前半部分的元素


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

代码



C++之迭代器_运算符_06


指针也是迭代器

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



C++之迭代器_迭代器_07




C++之迭代器_开发语言_08




C++之迭代器_c++_09


举报

相关推荐

0 条评论