C 关联容器的透明比较器
理解透明比较器的概念
C 语言14、关联容器引入了一个新概念,称为“透明”比较器。”根据标准,成员函数模板 find、count、lower_bound、upper_bound 和 equal_range 仅当类型 Compare::is_transparent 存在时才参与重载解析。
透明比较器是定义嵌套 is_transparent 的类型类型。此类型向关联容器发出信号,表明它应该认为比较器对于异构查找是透明的。因此,容器现在可以在容器的键类型和与该键类型可比较的不同类型之间进行比较。
透明比较器的好处
透明比较器解决关联容器中的异构查找问题。传统上,只能使用与容器的密钥类型相同类型的密钥来搜索容器。使用透明比较器,可以使用与键类型可比较但不一定是同一类型的值来搜索容器。
实现透明比较器
C 14 提供了一个名为 less 的库模板,可用于定义透明比较器。 less 模板有一个默认实现,专门用于 void 并允许比较任何类型。通过指定 std::less
对标准容器的影响
简介仅当使用透明比较器时,透明比较器的数量才会更改关联容器的行为。默认情况下,容器保留其原始行为。当使用透明比较器时,例如 std::less
在提供的示例中,std::set
以上是透明比较器如何在 C 关联容器中启用异构查找?的详细内容。更多信息请关注PHP中文网其他相关文章!