首页 >后端开发 >C++ >透明比较器如何增强 C 14 关联容器中的异构查找?

透明比较器如何增强 C 14 关联容器中的异构查找?

Linda Hamilton
Linda Hamilton原创
2024-12-26 14:48:10839浏览

How Do Transparent Comparators Enhance Heterogeneous Lookups in C  14 Associative Containers?

C 14 中的透明比较器

C 14 引入了关联容器的重大更改,因为成员函数模板 find、count、lower_bound、 upper_bound 和 equal_range 现在需要透明比较器来参与重载

透明比较器的目的

透明比较器旨在解决关联容器中的异构查找问题。在 C 14 之前,关联容器只能使用与容器的键完全相同类型的键来执行搜索。但是,在许多情况下,希望允许使用可转换为容器的键类型的键进行搜索。

透明比较器的示例

以下示例说明透明比较器:

template <>
struct less<> {
    template <class T, class U>
    auto operator()(T&& t, U&& u) const
        -> decltype(std::forward<T>(t) < std::forward<U>(u));
    typedef *unspecified* is_transparent;
};

此比较器可以与异构类型一起使用,因为它接受任何参数类型并且只需将它们转发给比较运算符。

对标准容器的影响

默认情况下,标准容器不使用透明比较器。但是,通过显式使用 std::less或者在实例化关联容器时使用另一个透明比较器,可以启用新功能。

问题的解决方案

透明比较器允许关联容器使用键执行搜索可转换为容器的密钥类型。这极大地扩展了关联容器的灵活性和实用性,特别是在需要异构查找的场景中。

结论

C 14 中透明比较器的引入提供了强大的功能关联容器中异构查找的机制。通过利用透明比较器,开发人员可以利用它们提供的灵活性和便利性。

以上是透明比较器如何增强 C 14 关联容器中的异构查找?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn