介绍
在C++中,partition函数通常是指STL(Standard Template Library)中的std::partition算法,它用于对一个序列进行分区操作。具体来说,std::partition接受一个范围和一个谓词(predicate)作为参数,将序列中满足谓词条件的元素移到序列的前部,并返回一个迭代器,指向最后一个满足条件的元素之后的位置。
源码
template<class BidirectionalIterator, class Predicate>
BidirectionalIterator partition(
BidirectionalIterator first, //开始迭代器
BidirectionalIterator last, //结束迭代器
Predicate pred //划分标准,为真的在前,为假的在后
);
把[first,last)区间的元素,按照pred标准进行重排,其中pred为true的元素放在前面,pred为false的元素放在后面。
例子
比如要把一个数组中的奇数都移动到偶数前面
//输出容器的所有元素
template<typename T>
void Show(const T& v)
{
for (const auto x : v)
cout << x << " ";
cout << endl;
}
bool is_odd(int n) //判断n是否为奇数
{
return (n % 2) != 0;
}
int main()
{
vector <int> v1{1,2,3,4,5,6,7,8,9,10};
cout << "v1:"; Show(v1);
//奇数放在前,偶数放在后
partition(v1.begin(), v1.end(), is_odd);
cout << "按奇偶划分,奇数在前偶数在后" << endl;
cout << "v1:"; Show(v1);
return 0;
}