#include <iostream>
using namespace std;
void FunIterator()//迭代器会与算法链接。适用于所有容器。
{
string str("abcdefg");
string::iterator ite;//string::iterator类型的迭代器ite。相当于一个指向string对象元素的一个指针,本质相当于一个char*(根据容器里面的元素或数据类型确定)的指针。
//char* a = str.c_str();//指向字符串的首地址。
ite = str.begin();// 返回一个迭代器,指向第一个字符。
/*for (size_t i = 0; i < str.size(); i++)
{
cout << *ite << " ";
ite++;
}*/
//for (size_t i = 0; i < str.size(); i++)
//{
// cout << ite[i] << " ";
// //ite++;
//}
//for (ite; ite!= str.end(); ite++)//函数end()返回一个迭代器,指向字符串的末尾(最后一个字符的下一个位置)
//{
// //*ite = 'a';//修改元素值。
//
// cout << *ite << " ";
//
//}
str.append(18, 'a');//string重新申请空间的时候,迭代器会失效。如果是链表结构则不会,因为链表尾加一块空间时,空间首地址不变。而普通的数组末尾加一块空间则总空间的首地址会改变,就需要重新申请空间首地址。
//ite = str.begin();重新返回一个迭代器,指向新的字符串第一个字符。
ite[2] = 'h';//修改元素值。
cout << str<< endl;
}
int main()
{
FunIterator();
system("pause");
return 0;
}