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重新申请空间的时候,迭代器会失效。
不同迭代器失效与否:是否强迫对象申请了新的空间,如果申请了新的空间就会失效,否则不会失效。