C++ set key_comp()

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

C++ set key_comp() 函数用于返回一个比较对象的副本,该对象被 set 容器用于比较键。

比较对象可用于比较容器中两个元素的键值。此比较对象在构造对象时给出,它可以是指向函数的指针或函数对象。在这两种情况下,它都接受两个相同类型的参数,如果第一个参数根据严格弱序在第二个参数之前,则返回 true,否则返回 false。

注意:默认情况下,比较对象是一个 less 对象,其返回结果与运算符 < 相同。

语法

注意:存储的对象定义成员函数

如果 _Left 在排序顺序中先于 _Right 且不等于 _Right,则返回 true。

参数

返回值

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

复杂度

常量。

迭代器有效性

无变化。

数据竞争

容器被访问。

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

异常安全

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

示例 1

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

输出

Compare keys (1 is true and 0 is false):  1
Compare keys (1 is true and 0 is false):  0

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

示例 2

让我们看一个简单的例子

输出

myset contains: 0 1 2 3 4

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

示例 3

让我们看一个简单的例子

输出

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

在上面的示例中,使用了两个集合,即 m1 和 m2。m1 的键比较对象是 less,m2 的键比较对象是 greater。因此,当我们比较 (2, 3) 时,m1 的 kc1 函数对象返回 true,m2 的 kc2 函数对象返回 false。

示例 4

让我们看一个简单的例子

输出

use function object kc to find less of (10, 4)...
kc(10, 4) == false, which means 10 > 4

在上面的示例中,集合 setobj 的 kc 函数对象比较 (10, 4),如果为 true,则返回 10 < 4,如果为 false,则返回 10 > 4。