目录
1 基础用法
(一)
upper_bound(iter1, iter2, x)
[iter1, iter2)有序,在它们之间找到一个最小的数,它 > x。返回值类型为迭代器,如果找到了,返回值 != iter2;否则返回值 == iter2。
lower_bound(iter1, iter2, x)
[iter1, iter2)有序,在它们之间找到一个最小的数,它 >= x。返回值类型为迭代器,如果找到了,返回值 != iter2;否则返回值 == iter2。
(二)
upper_bound的函数原型为,
template< class ForwardIt, class T >
ForwardIt upper_bound( ForwardIt first, ForwardIt last, const T& value );
template< class ForwardIt, class T, class Compare >
ForwardIt upper_bound( ForwardIt first, ForwardIt last, const T& value, Compare comp );
first
和last
:分别表示要搜索的有序序列的开始和结束迭代器。
value
:要查找的值。
comp
:一个可选的比较函数对象,用于定义序列中的排序规则。如果不提供此参数,则默认使用<
运算符进行比较。
例如这样,
sort(rides.begin(), rides.end(), [](const vector<int>& a, const vector<int>& b) {
return a[1] < b[1];
});
int j = upper_bound(rides.begin(), rides.begin() + i, rides[i][0], [](int x, const vector<int> &r) -> bool {
return x < r[1];
}) - rides.begin();
表示,对于vector<vector<int>> rides
的元素vector<int> r
,按照r[1]
将rides
中的元素从小到大排序。然后,找到第一个r[1] > x
的下标。