介绍
在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;
}