先看代码,再解释函数的作用
bool Fun(char c)
{
return c=='*';
}
int main()
{
string str = "***b**a**c**d**";
string str1(str);
string str2(str);
std::partition(std::begin(str1), std::end(str1),
Fun);
std::stable_partition(std::begin(str2), std::end(str2),
Fun);
cout<<"str1="<<str1.c_str()<<endl;
cout<<"str2="<<str2.c_str()<<endl;
return 1;
}
运行结果:
从运行结果上看,partition函数把所有的*都提前了,但是其他字母的顺序是打乱的,而stable_partition函数除了把*号提前,其他字母的顺序和原来是一样的
Fun函数判断传入的char是不是*,如果是,就返回true
stable_partition 函数,前两个参数规定了排序的范围,最后一个参数要传入一个函数名,程序会遍历规定范围内的元素并传入Fun函数,根据返回值决定这个元素是往前放还是往后放