📅  最后修改于: 2023-12-03 14:39:57.219000             🧑  作者: Mango
在C++标准库中,partition_point
是一个非常有用的函数。其作用是查找序列中满足某个条件的元素的边界。
template<class ForwardIt, class UnaryPredicate>
ForwardIt partition_point(ForwardIt first, ForwardIt last, UnaryPredicate p);
first
:序列的起始迭代器last
:序列的终止迭代器p
:一元谓词,用于判断元素是否满足条件函数返回一个迭代器,指向第一个不满足条件的元素的位置。如果序列中所有元素都满足条件,则返回last
。
下面是一个简单的使用示例,用于查找一个vector中所有大于5的元素的边界。
#include <iostream>
#include <algorithm>
#include <vector>
bool is_greater_than_5(int i)
{
return i > 5;
}
int main()
{
std::vector<int> v{3, 6, 8, 2, 7, 5, 9, 1};
auto it = std::partition_point(v.begin(), v.end(), is_greater_than_5);
std::cout << "The first element not greater than 5 is: " << *it << std::endl;
return 0;
}
输出结果为:
The first element not greater than 5 is: 5
上述代码中,我们定义了一个谓词is_greater_than_5
,用于判断元素是否大于5。然后调用了partition_point
函数,查找第一个不大于5的元素的位置,最后输出此位置对应的元素值。
partition_point
返回的位置可能是有多个的