C++ set equal_range()

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

C++ set 的 equal_range() 函数用于返回容器中包含所有等于 val 的元素的范围边界。由于 set 容器中没有重复值,此范围最多包含一个元素。

如果 val 与容器中的任何值都不匹配,则返回值范围的长度为 0,并且两个迭代器都将指向大于 val 的最近值。否则,如果 val 大于容器中的所有元素,则它指向 end。

语法

该范围由两个迭代器定义,一个指向不小于值 val 的第一个元素,另一个指向大于值 val 的第一个元素。

参数

val:要在 set 容器中搜索的值。

返回值

此函数返回一个 pair。其中 pair::first 是与 lower_bound(val) 返回值相同的范围下限,pair::second 是与 upper_bound(val) 返回值相同的范围上限。

复杂度

大小的对数。

迭代器有效性

无变化。

数据竞争

容器被访问(const 和 non-const 版本都不会修改容器)。

并发访问 set 的元素是安全的。

异常安全

如果抛出异常,容器中没有变化。

示例 1

让我们看一个简单的例子

输出

Lower bound of b is: b
Upper bound of b is: c

在上面的例子中,b 的下边界是 b,b 的上边界是 c。

示例 2

让我们看一个简单的例子

输出

The lower bound is 3
The upper bound is 3

在上面的示例中,equal_range() 函数返回 end(),即 3,因为它尝试查找不存在于 set mp 中的 10。

示例 3

让我们看一个简单的例子

输出

The upper bound of the element with a key of 20 in the set s1 is: 30.
The lower bound of the element with a key of 20 in the set s1 is: 20.
A direct call of upper_bound( 20 ) gives 30,
matching the 2nd element of the pair returned by equal_range( 20 ).
The set s1 doesn't have an element with a key less than 40.

示例 4

让我们看一个简单的例子

输出

The lower bound points to: 30
The upper bound points to: 40

下一主题C++ Set