STL之partition和stable_partition

来源:互联网 发布:职业调查报告网络调研 编辑:程序博客网 时间:2024/05/18 15:57

先看代码,再解释函数的作用

       

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函数,根据返回值决定这个元素是往前放还是往后放

0 0