C++ multiset key_comp()

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

C++ Multiset key_comp() 函数用于返回比较对象的副本,该对象由多重集容器用于比较键。

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

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

语法

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

参数

返回值

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

复杂度

常量。

迭代器有效性

无变化。

数据竞争

容器被访问。

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

异常安全

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

示例 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

让我们看一个简单的例子

输出

mymultiset contains: 0 1 2 3 4

在上面的示例中,highest 变量存储 mymultiset 多重集的最后一个元素,并且迭代器用多重集的第一个元素(按排序顺序)初始化。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

在上面的示例中,多重集 multisetobj 的 kc 函数对象比较 (10, 4),如果为 true,则返回 10 < 4;如果不是 true,则返回 10 > 4。

下一个主题C++ multiset