c++string中iterator的问题。
#include <iostream>#include <algorithm>
#include <cstring>
using namespace std;
int main()
{
for(string s;cin>>s;)
{
if(s.empty())
continue;
if(s.length()<=1)
cout<<"No more permuntion"<<endl;
//ele_left右边最大减序子集左边相邻的一个元素
string::iterator ele_left=s.end(),ele_right;
for(--ele_left;ele_left!=s.begin();--ele_left)//查找右边最大的减序子集
if(*(ele_left-1)<*ele_left)
break;
if(ele_left==s.begin())
cout<<"No more permuntion"<<endl;
ele_left--;
for(ele_right=ele_left+1;ele_right!=s.end();++ele_right)
if(*ele_right<*ele_left)
break;
//cout<<*ele_left<<endl;
//cout<<*(ele_right-1)<<endl;
//交换ele_left和ele_right的值,但不改变它们的指向
iter_swap(ele_left,--ele_right);
cout<<*ele_left<<endl;//输出4
cout<<*(++ele_left)<<endl;//输出6
reverse(ele_left+1,s.end());//反转右侧减序子集,使之成为最小的增序子集
cout<<s<<endl;
}
return 0;
}
//交换之后ele_right指向4,执行ele_left+1后 ele_right不应指向后面的2吗 ,
//为什么会指向前面的6
//测试数据为3642