string迭代器相关函数代码:

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
#include<functional>

using namespace std;

void Construction_string_iterator()//string迭代器_构造
{

	string str("abcdefg"); 
	string ::iterator ite;//指向一个string容器的迭代器 
	ite=str.begin();//end();end指向字符串末尾元素的下一个位置 

	//定义出来的 ite 相当于一个char*的指针。也可以用作下标运算、自增自减等。

}

void Output_string_iterator()//string迭代器_输出
{
	string str("abcdef");
	string::iterator ite = str.begin();


	//指针下标输出:
	for (int i = 0;i < str.size();i++) 
	{
		cout << ite[i]<<" ";
	}
	cout << endl;


	//指针遍历输出:
	for (ite;ite != str.end();ite++)
	{
		cout << *ite << " ";
	}
	cout << endl;

}

void Modification_string_iterator()//string迭代器_修改
{
	string str("qwerty");
	string::iterator ite = str.begin();

	//迭代器下标指定修改
	ite[2] = 'w';
	cout << ite[2] << endl;

	//迭代器下标遍历修改:
	for (ite;ite != str.end();ite++)
	{
		*ite = 'a';
		cout << *ite << " ";
	}
	cout << endl;

}

void Other_string_iterator()//string迭代器_其它操作
{
	string str("xyzxyz");
	string str1("abcdefg");
	string str2("qwerty");
	string str3("123456");

	//insert中间插入:
	str.insert(str.begin() + 1, 3,'n');//指定位置插入n个val
	cout << str<<endl;

	str.insert(str.begin(), str3.begin(), str3.end());//插入另一个对象(或另一对象的一段)
	cout << str << endl;

	
	//append尾部添加:
	str1.append(str2);// str1.append(str2.begin()+2,str2.end()-1);
	cout << str1 << endl;
}

void Delet_string_iterator()//string迭代器_删除
{
	string str("abcdefg");

	//删除一个指定元素
	str.erase(str.begin() + 1);
	cout << str << endl;

	//删除一段指定元素:
	str.erase(str.begin() + 1, str.begin() + 2);
	cout << str << endl;
}


void fun(char c)
{
	//参数类型要与对象类型相同
	cout << c;
}
void Traverse()//for_each遍历算法
{
	string str("abcde");
	for_each(str.begin(), str.end(), fun);
	cout << endl;
}

void sort1()//sort排序算法
{
	string str("edfcgab");

	//默认从小到大(两参)
	sort(str.begin(), str.end());
	cout << str<<endl;

	//从大到小(三参)
	sort(str.begin(), str.end(), greater<char>());
	cout << str<<endl;//使用greater<> ()要加头#include<functional>

}



void Print()
{
	cout << "------------------------------------------------------------------------------------" << endl << endl;
}
int main()
{
	Construction_string_iterator();//string迭代器_构造
	Print();
	Output_string_iterator();//string迭代器_输出
	Print();
	Modification_string_iterator();//string迭代器_修改
	Print();
	Other_string_iterator();//string迭代器_其它操作
	Print();
	Delet_string_iterator();//string迭代器_删除
	Print();
	Traverse();//for_each遍历算法
	Print();
	sort1();
	Print();
	system("pause");
	return 0;
}

输出结果:

1.迭代器的定义方法与指针不同,但是使用方法与指针相同。
2.迭代器最大的优点是与算法结合时,迭代器适用于所有容器,又称为智能(通用)指针。
3.迭代器失效
即:指针指的值跑偏了
string重新申请空间的时候,迭代器会失效。
不同迭代器失效与否:是否强迫对象申请了新的空间,如果申请了新的空间就会失效,否则不会失效。