C++ Multiset equal_range()

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

C++ Multiset equal_range() 函数用于返回容器中包含所有等于 val 的元素的范围边界。

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

语法

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

参数

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

返回值

此函数返回 pair。其中 pair::first 是具有与 lower_bound(val) 返回值相同的范围的下边界,pair::second 是与 upper_bound(val) 返回值相同的值,即其对应的范围上边界。

复杂度

大小的对数。

迭代器有效性

无变化。

数据竞争

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

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

异常安全

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

示例 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,因为它试图查找多重集合 mp 中不存在的 10,因此它返回 end。

示例 3

让我们看一个简单的例子

输出

The upper bound of the element with a key of 20 in the multiset s1 is: 30.
The lower bound of the element with a key of 20 in the multiset 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 multiset 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++ multiset