upper_bound\lower_bound的用法

本文通过一个简单的C++程序示例,展示了如何使用STL中的upper_bound和lower_bound函数来确定元素在已排序数组中可能的插入位置。这两个函数常用于查找和排序算法中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include <algorithm>//必须包含的头文件
using namespace std;
int main(){
 int point[10] = {1,3,7,7,9};
 int tmp = upper_bound(point, point + 5, 7) - point;//按从小到大,7最多能插入数组point的哪个位置
 printf("%d\n",tmp);
 tmp = lower_bound(point, point + 5, 7) - point;按从小到大,7最少能插入数组point的哪个位置
 printf("%d\n",tmp);
 return 0;
}
output:
4
2
在 ST 语言中,`upper_bound` 和 `lower_bound` 也用于在一个已排序的序列中查找指定值的位置。它们的使用方法与 C++ 中的函数类似,但有一些细节需要注意。 1. `upper_bound` 函数 `upper_bound` 函数的语法如下: ``` pos:= upper_bound(array, value [, compare]) ``` 其中,`array` 是要查找的已排序数组,`value` 是要查找的特定值,`compare` 是一个可选参数,用于指定比较函数。返回值 `pos` 是一个整数,它表示第一个大于 `value` 的元素的位置。 需要注意的是,与 C++ 不同,ST 语言中的 `upper_bound` 函数返回的位置是从 0 开始计数的,而不是从 1 开始。此外,如果 `value` 大于等于数组中的所有元素,则返回数组长度。 下面是一个使用 `upper_bound` 函数的例子: ``` array := [1, 2, 2, 3, 4, 5] pos := upper_bound(array, 2) // pos 的值为 3,表示第一个大于 2 的元素在数组中的位置为 3 ``` 2. `lower_bound` 函数 `lower_bound` 函数的语法与 `upper_bound` 函数类似,但它返回的是第一个大于等于 `value` 的元素的位置。即,如果数组中存在元素等于 `value`,则返回第一个等于 `value` 的元素的位置;否则返回第一个大于 `value` 的元素的位置。 ``` pos:= lower_bound(array, value [, compare]) ``` 需要注意的是,ST 语言中的 `lower_bound` 函数也返回从 0 开始计数的位置,而不是从 1 开始。如果 `value` 大于数组中的所有元素,则返回数组长度。 以下是一个使用 `lower_bound` 函数的例子: ``` array := [1, 2, 2, 3, 4, 5] pos := lower_bound(array, 2) // pos 的值为 1,表示第一个大于等于 2 的元素在数组中的位置为 1 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值