c++中对数组下界()和上界()的实现
在本文中,我们将讨论在由对组成的数组中下界()和上界()的实现。
- 下界():它返回一个迭代器,指向范围【第一个,最后一个】中的第一个元素,该元素的值大于或等于给定值【瓦尔】。但是在对数组中,对(x,y) 的下界()将返回一个迭代器,指向第一个值大于或等于 x 而第二个值大于或等于 y 的对的位置。 如果不满足上述标准,那么它返回一个迭代器到数组对中的索引。
- upper_bound(): 它返回一个迭代器,指向范围【第一个,最后一个】中的第一个元素,该元素的值大于给定值【瓦尔】。但是在对数组中,对的上限()(x,y) 将返回一个迭代器,指向第一个值大于 x 而第二个值大于 y 的对的位置。 如果不满足上述标准,那么它返回一个迭代器到数组对中的索引。
语法:
//对于下界 下界(array_name,array_name + array_size,value,comparator _ function);
//对于上限 上限(array_name,array_name + array_size,value,comparator _ function);
参数:成对数组中的函数下界()和上界()接受以下参数:
- 数组 _ 名称&数组 _ 大小:表示【开始,结束】之间间隔的数组的名称和大小。
- 值:范围内要搜索的下界()/上界()的值。
- comparator_function: 二元函数,接受两个参数作为其输入,即数组中的一个类型对的元素,第二个是必须找到其下界()/上界()的值,并返回一个布尔值。
返回类型:返回一个迭代器,指向数组中第一个参数大于或等于值的第一个元素。
下面是演示成对数组中的下界()和上界()的程序:
C++
// C++ program to demonstrate lower_bound()
// and upper_bound() in Array of Pairs
#include <bits/stdc++.h>
using namespace std;
// Function to implement lower_bound()
void findLowerBound(pair<int, int> arr[],
pair<int, int>& 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<int, int> arr[],
pair<int, int>& 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<int, int> arr[]
= { { 1, 3 }, { 1, 7 }, { 2, 4 },
{ 2, 5 }, { 3, 8 }, { 8, 6 } };
// Given pair {2, 5}
pair<int, int> 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;
}
Output:
lower_bound() for {2, 5} is at index: 3
upper_bound() for {2, 5} is at index: 4
版权属于:月萌API www.moonapi.com,转载请注明出处