以string类为例,有4种迭代器:正向迭代器、常对象正向迭代器、反向迭代器、常对象反向迭代器
string类迭代器文档:string - C++ Reference (cplusplus.com)
1.正向迭代器
对于普通对象的正向遍历,可使用迭代器:begin、end
string s1("i miss gjj");
string::iterator it = s1.begin();
while (it != s1.end())
{
*it -= 1;
cout << *it << " ";
++it;
}
cout << endl;
2.常对象正向迭代器
对于常对象的正向遍历,不可修改常对象的内容,使用迭代器begin、end或cbegin、cend
//begin end
const string s2("i love gjj");
string::const_iterator it1 = s2.begin();
while (it1 != s2.end())
{
cout << *it1 << " ";
++it1;
}
cout << endl;
//cbegin cend
string::const_iterator it2 = s2.cbegin();
while (it2 != s2.cend())
{
cout << *it2 << " ";
++it2;
}
cout << endl;
3.反向迭代器
对于普通对象的反向遍历,可使用迭代器:rbegin、rend
string s3("i miss you");
string::reverse_iterator rit = s3.rbegin();
while (rit != s3.rend())
{
*rit -= 1;
cout << *rit << " ";
++rit;
}
cout << endl;
4.常对象反向迭代器
对于常对象的反向遍历,不可修改常对象内容,使用迭代器:rbegin、rend或者crbegin、crend
//rbegin rend
const string s4("gjj miss i");
string::const_reverse_iterator rit1 = s4.rbegin();
while (rit1 != s4.rend())
{
cout << *rit1 << " ";
++rit1;
}
cout << endl;
//crbegin crend
string::const_reverse_iterator rit2 = s4.crbegin();
while (rit2 != s4.crend())
{
cout << *rit2 << " ";
++rit2;
}
cout << endl;