stable_sort和sort区别:
如果你写一个比较函数:
bool less_len(const string &str1, const string &str2)
{
return str1.length() < str2.length();
}
此时,"apples" 和 "winter" 就是相等的,如果在"apples" 出现在"winter"前面,用带stable的函数排序后,他们的次序一定不变,如果你使用的是不带"stable"的函数排序,那么排序完 后,"winter"有可能在"apples"的前面。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
string str;
while(getline(cin,str))
{
string cs;
for(auto c:str)
{
if(isalpha(c))//判断一个字符是否为字母
cs+=c;
}
stable_sort(cs.begin(),cs.end(),[](char a,char b){
return tolower(a)<tolower(b);//转换成小写
});
for(int i=0,j=0;i<str.size();i++)
if(isalpha(str[i]))cout<<cs[j++];
else cout<<str[i];
cout<<endl;
}
return 0;
}