c++迭代器
原创
©著作权归作者所有:来自51CTO博客作者zzxiaoma的原创作品,请联系作者获取转载授权,否则将追究法律责任
使用迭代器可以访问某个元素,也能从一个元素移动到另外一个元素。迭代器有begin和end成员,begin成员负责返回指向第一个元素,end成员负责返回指向容器尾元素下一个位置。
下面是把第一个字符改为大写
string s("hello world");
if (s.begin() != s.end() ){
auto it = s.begin();
*it = toupper(*it); //修改当前字符改为大写
}
循环处理每个元素
for (auto it = s.begin();it != s.end(); ++it) {
*it = toupper(*it);
}
begin和end返回的具体类型由对象是否是常量决定,如果对象是常量就返回const_iterator,如果不是常量返回iterator
vector<int>::iterator it; //it能读写vector<int>元素
string::iterator it2; //it2能读写string对象中的字符
vector<int>::const_iterator it3; //it3能读vector<int>元素
string::const_iterator it4; //it4能读string对象中的字符
cbegin和cend这2个函数用于专门返回const_iterator
解引用迭代器可获得迭代器所指的对象,然后就可以执行对象的方法。
对于vector<string>来说,检查it所指字符串是否为空,(*it)中的括号不能少。
访问类的方法和成员时,还可以使用->
for (auto it = text.cbegin();it!=text.cend()&&!it->empty();++it){
cout << *it << endl;
}
对vector对象的有些操作会使迭代器失效,不能往vector中添加数据
迭代器可以和一个整数进行运算,返回向前或向后移动了若干个位置的迭代器。
auto mid = v.begin()+v.size()/2;