在本文中,我们将讨论对数组中的lower_bound() 和upper_bound() 的实现。
- lower_bound():它返回一个迭代器,该迭代器指向范围[first, last) 中的第一个元素,该元素的值大于或等于给定值“val” 。但是在 Array of Pairs lower_bound() for pair(x, y)将返回一个迭代器,指向第一个值大于或等于x且第二个值大于等于y 的对的位置。
如果不满足上述条件,则它返回一个迭代器,指向该对数组中的索引。 - upper_bound():它返回一个迭代器,指向范围[first, last) 中第一个元素的值大于给定值“val” 。但是在 Array of Pairs upper_bound() for pair(x, y)将返回一个迭代器,指向第一个值大于x且第二个值大于y 的对的位置。
如果不满足上述条件,则它返回一个迭代器,指向该对数组中的索引。
句法:
// For lower bound
lower_bound(array_name, array_name + array_size, value, comparator_function);
// For upper bound
upper_bound(array_name, array_name + array_size, value, comparator_function);
参数:成对数组中的函数lower_bound()和upper_bound()接受以下参数:
- array_name & array_size:数组的名称和大小,表示[start, end)之间的间隔。
- value:要在范围内搜索的lower_bound()/upper_bound() 的值。
- 比较器函数:接受两个参数作为输入的二进制函数,即数组中类型对的元素,第二个是必须找到 lower_bound()/upper_bound() 的值并返回布尔值。
返回类型:它返回一个迭代器,它指向数组中第一个参数大于或等于该值的第一个元素。
下面是在成对数组中演示 lower_bound() 和 upper_bound() 的程序:
C++
// C++ program to demonstrate lower_bound()
// and upper_bound() in Array of Pairs
#include
using namespace std;
// Function to implement lower_bound()
void findLowerBound(pair arr[],
pair& p,
int n)
{
// Given iterator points to the
// lower_bound() of given pair
auto low = lower_bound(arr, arr + n, p);
cout << "lower_bound() for {2, 5}"
<< " is at index: "
<< low - arr << endl;
}
// Function to implement upper_bound()
void findUpperBound(pair arr[],
pair& p,
int n)
{
// Given iterator points to the
// lower_bound() of given pair
auto up = upper_bound(arr, arr + n, p);
cout << "upper_bound() for {2, 5}"
<< " is at index: "
<< up - arr << endl;
}
// Driver Code
int main()
{
// Given sorted array of Pairs
pair arr[]
= { { 1, 3 }, { 1, 7 }, { 2, 4 },
{ 2, 5 }, { 3, 8 }, { 8, 6 } };
// Given pair {2, 5}
pair p = { 2, 5 };
// Size of array
int n = sizeof(arr) / sizeof(arr[0]);
// Function Call to find lower_bound
// of pair p in arr
findLowerBound(arr, p, n);
// Function Call to find upper_bound
// of pair p in arr
findUpperBound(arr, p, n);
return 0;
}
输出:
lower_bound() for {2, 5} is at index: 3
upper_bound() for {2, 5} is at index: 4
想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解语言和 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程。