📌  相关文章
📜  C++中对数组中lower_bound()和upper_bound()的实现

📅  最后修改于: 2021-09-02 07:33:17             🧑  作者: Mango

在本文中,我们将讨论对数组中的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 的对的位置
    如果不满足上述条件,则它返回一个迭代器,指向该对数组中的索引。

句法:

参数:成对数组中的函数lower_bound()upper_bound()接受以下参数:

  1. array_name & array_size:数组的名称和大小,表示[start, end)之间的间隔。
  2. value:要在范围内搜索的lower_bound()/upper_bound() 的值。
  3. 比较器函数:接受两个参数作为输入的二进制函数,即数组中类型对的元素,第二个是必须找到 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 等的准备工作,请参阅完整的面试准备课程