在访问string对象字符或vector对象的元素时,除了使用下标运算符之外,还能使用迭代器(iterator)。
类似于指针类型,迭代器也提供了对对象的间接访问。迭代器的对象为容器中的元素或者string对象中的元素。可以对元素进行访问,也可以移动。
begin()和end()分别返回第一个元素位置和为元素下一个位置的迭代器。
注:若容器为空,则begin和end返回的都是尾后迭代器。
常用迭代器运算:
*iter(返回迭代器所指元素的引用) iter->mem ++iter(iter指向容器中下一个元素) --iter(iter指向容器中上一个元素) iter1 == iter2 iter1 != iter2
注:end返回的迭代器并不指向某一个元素,不能对其进行递增或解引用
迭代器类型:
vector<int>::iterator it; 读写vector<int>元素
string::iterator it2;读写string中的元素
vector<int>::const_iterator it3;只读
string::const_iterator it4;只读
若:vector或string对象是一个常量,只能用const_iterator;
vector或string对象不是常量,iterator或const_iterator都可
解引用和成员访问操作:
解引用迭代器可以获得迭代器所指的对象 例如: 若it是一个vector对象的迭代器,(*it).empty()
同时,c++定义了箭头运算符(->),将解引用和成员访问结合在一起。
例如: it->mem 和 (*it).mem 相同
注意:使用了迭代器的循环体,不要向迭代器所属容器中添加元素