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中文网其他相关文章!