//迭代器以及两个常用算法
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
void FunIterator(){
//迭代器
string str1("abcdefg");
string::iterator ite; //char型的指针
ite=str1.begin(); //end();end指向字符串末尾元素的下一个位置
for(int i=0;i<str1.size();i++){
cout << ite[i] << " ";
}
cout << endl;
for(ite;ite!=str1.end();ite++){
*ite='a'; //也可以进行赋值
cout << *ite << " ";
}
//如果重新分配空间,迭代器会失效
}
void TextIterator(){
string str1("abcdefg");
string str2("efg");
//str1.append(str2.begin()+2,str2.end()); //尾部添加
//str1.erase(str1.begin()+2,str1.end()-2); //删除
//str1.insert(str1.begin()+1,3,'N'); //在str1.begin()+1的位置前插入3个'N'
str1.insert(str1.begin()+1,str2.begin()+1,str2.end());
// 在str1.begin()+1的位置前插入str2的一段
cout <<str1 << endl;
//string::iterator() ite;
}
void fun(char c){
//参数类型与对象类型一致
cout << c << " ";
}
void FunForeach(){
string str1("adasdegyutyb");
for_each(str1.begin(),str1.end(),fun);
cout << endl;
//前两个参数是遍历的范围,最后一个参数是一个定义的函数
//函数里面可以做你想做的事儿
sort(str1.begin(),str1.end());//默认从小到大
cout << str1 << endl;
sort(str1.begin(),str1.end(),greater<char>()); //加一个参数可以从大到小
cout << str1 << endl;
}
int main(){
//FunIterator();
//TextIterator();
FunForeach();
return 0;
}
[点击并拖拽以移动]