#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
//分割算法
int main()
{
/************************************************************************/
//partition
/************************************************************************/
//partition:通过依据function object重新排列[first,last)中的元素,使得满足函数对象的元素排在不满足函数对象的元素前面
//存在一个middle iterator,使得[first,middle)满足函数对象,而[middle,last)不满足函数对象
/*
template<class BidirectionalIterator, class Predicate>
BidirectionalIterator partition(
BidirectionalIterator _First,
BidirectionalIterator _Last,
BinaryPredicate _Comp
);
*/
std::vector<int> iv;
generate_n(std::back_inserter(iv), 10, []{return rand() % 10;});
//把满足3倍数的数排在前面
std::partition(iv.begin(), iv.end(), [](const int num){return num % 3 == 0;});
std::copy(iv.begin(), iv.end(), std::ostream_iterator<int>(std::cout , " "));
//把小于5的数排在前面
std::cout << std::endl;
std::partition(iv.begin(), iv.end(), std::bind2nd(std::less<int>(), 5));
std::copy(iv.begin(), iv.end(), std::ostream_iterator<int>(std::cout , " "));
/************************************************************************/
//stable_partition
/************************************************************************/
//stable_partition:类似partition,能够保持元素的相对顺序
/*
template<class BidirectionalIterator, class Predicate>
BidirectionalIterator stable_partition(
BidirectionalIterator _First,
BidirectionalIterator _Last,
Predicate _Pred
);
*/
//例子:略
return 0;
}
====================打个广告,欢迎关注====================
QQ: | 412425870 |
csdn博客: | http://blog.youkuaiyun.com/caychen |
码云: | https://gitee.com/caychen/ |
github: | https://github.com/caychen |
点击群号或者扫描二维码即可加入QQ群: | ![]() |
![]() |