C++ set value_comp()

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

C++ set value_comp() 函数返回一个比较对象。此函数用于比较两个元素,以检查第一个元素的键是否排在第二个元素之前。

它接受两个相同类型的参数,如果第一个参数根据更窄的弱序排在第二个参数之前,则返回 true,否则返回 false。

例如:- 对于一个 set m,如果两个元素 e1(k1, d1) 和 e2(k2, d2) 是 value_type 类型的对象,其中 k1 和 k2 是 key_type 类型的键,d1 和 d2 是 setped_type 类型的数据,则 m.value_comp(e1, e2) 等效于 m.key_comp(k1, k2)。

语法

注意:存储对象定义了一个成员函数

如果左键的值在排序顺序中排在右键值之前且不等于右键值,则返回 true

参数

返回值

它返回一个值比较函数对象。

复杂度

常量。

迭代器有效性

无变化。

数据竞争

容器被访问。

不访问任何包含的元素:同时访问 set 的元素是安全的。

异常安全

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

示例 1

让我们看一个比较元素值的简单示例

输出

Compare 2 to 5 (1 is true and 0 is false): 1
Compare 8 to 5 (1 is true and 0 is false): 0

在上面的例子中,comp(2, 5) 返回 true,因为 2 小于 5。而 comp(8, 5) 返回 false,因为 8 不小于 5。

示例 2

让我们看一个简单的例子

输出

myset contains: 0 1 2 3 4

在上面的示例中,`highest` 变量存储 `myset` 集合的最后一个元素,并且迭代器用集合的第一个元素(按排序顺序)初始化。`do-while` 循环用于打印集合的元素,其中循环将一直运行,直到第一个键小于最后一个键(为此它使用名为 `mycomp` 的 `key_comp()` 函数)。

示例 3

让我们看一个简单的例子

输出

vc1( 2,3 ) returns value of true, where vc1 is the function object of s1.
vc2( 2,3 ) returns value of false, where vc2 is the function object of s2.

示例 4

让我们看一个简单的例子来展示 key_comp() 和 value_comp() 之间的区别

输出

highest1 is 5
highest2 is 5

在上面的例子中,当我们比较 key_comp() 和 value_comp() 时,对于这样的 set 容器,这两个词是相同的。对于两种类型的函数,它将返回相同的值。


下一主题Set find() 函数