C++ STL笔记(2.迭代器)

迭代器(Iterator),用于提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
Iterator模式是运用于聚合对象的一种模式,通过运用该模式,使得我们可以在不知道对象内部表示的情况下,按照一定顺序(由iterator提供的方法)间接访问聚合对象中的各个元素。

迭代器的作用:能够让迭代器与算法不干扰的相互发展,用以操作复杂的数据结构,容器提供迭代器,算法使用迭代器。

  • 定义和初始化
    每种容器都定义了自己的迭代器类型
    例如:
vector<int>::iterator    iter;

每种容器都定义了一对名为begin和en的函数,用于返回迭代器。
例如:

vector<int> vec;
for(vector<int> : : iterator it=vec.begin ; it! = vec.end ; it++){     }

注意end并不指向容器的任何元素,而是指向容器的最后元素的下一位置,称为超出末端迭代器。如果vector为空,则begin返回的迭代器和end返回的迭代器相同。一旦向上面这样定义和初始化,就相当于把该迭代器和容器进行了某种关联,就像把一个指针初始化为指向某一空间地址一样。

  • 常用操作
    1.常规运算
*iter //对iter进行解引用,返回迭代器iter指向的元素的引用

iter->men //对iter进行解引用,获取指定元素中名为men的成员。等效于(*iter).men

++iter //给iter加1,使其指向容器的下一个元素

iter++ --iter //给iter减1,使其指向容器的前一个元素

iter-- iter1==iter2 //比较两个迭代器是否相等,当它们指向同一个容器的同一个元素或者都指向同同一个容器的超出末端的下一个位置时,它们相等

iter1!=iter2

2.遍历容器(此处以vector 容器举例)

vector<int> vec;
for(vector<int> : : iterator it=vec.begin ; it! = vec.end ; it++){     }
  • const_iterator
    每种容器还定义了const_iterator类型,该类型不同于之前的是const_iterator只能用于读取容器中的元素,不能用于改变其值
for(vector<int>::const_iterator iter=ivec.begin();iter!=ivec.end();++iter)
     cout<<*iter<<endl;       //合法,读取容器中元素值

for(vector<int>::const_iterator iter=ivec.begin();iter!=ivec.end();++iter)
    *iter=0;        //不合法,不能进行写操作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值