C++ algorithm lower_bound()

2024年8月30日 | 阅读4分钟

C++ algorithm lower_bound() 函数是 二分查找 的一个版本。此函数用于返回一个迭代器,指向有序范围 [first, last) 中第一个不小于(即大于或等于)指定值 val 的元素。

第一个版本使用运算符 < 来比较元素,第二个版本使用 comp 函数。

语法

参数

first: 指向要搜索的范围中第一个元素的前向迭代器。

last: 指向要搜索的范围中最后一个元素之后的前向迭代器。

comp:一个用户定义的二元谓词函数,接受两个参数,如果这两个参数有序则返回true,否则返回false。它遵循严格的弱排序来对元素进行排序。

val:用于比较范围内元素的下界值。

返回值

它返回一个迭代器,指向范围内第一个不小于 val 的元素,如果没有找到这样的元素,则返回 last。

复杂度

平均而言,复杂度在 first 和 last 之间的距离上呈对数关系:执行最多 log2 (N) + 1 次元素比较,其中 N = last - first。

数据竞争

访问范围 [first, last) 中的对象。

异常

如果元素比较或迭代器操作抛出异常,此函数将抛出异常。

注意:无效参数会导致未定义行为。

示例 1

让我们看一个简单的例子来演示 lower_bound() 的用法

输出

4, pos = 2

示例 2

让我们看另一个简单示例

输出

lower_bound at position 3
upper_bound at position 6

示例 3

让我们看另一个简单示例

输出

4 4 4 
4 found at index 2

示例 4

让我们看另一个简单示例

输出

First element which is greater than 'C' is b
First element which is greater than 'C' is d
All elements are less than 'z'.

下一主题C++ 算法