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

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

Susan Sarandon
Susan Sarandon原创
2024-12-31 12:23:16910浏览

How Do Transparent Comparators Enhance Lookup in C  14 Associative Containers?

透明比较器:关联容器中增强的查找功能

在 C 14 中,关联容器引入了重大更改。如 [associative.reqmts]/13 中所述,成员函数模板 find、count、lower_bound、upper_bound 和 equal_range 仅在类型 Compare::is_transparent 存在时参与重载决策。

的用途透明比较器

使比较器“透明”的目的是扩展查找关联容器的功能。通过允许比较器透明,开发人员可以利用与容器的密钥可比较的类型,而不必局限于使用密钥类型本身。这使得查找场景更加灵活和高效。

实现和使用

C 14 引入了诸如 std::less 之类的库模板,有助于创建透明比较器:

template <class T = void> struct less {
    // ...
    typedef *unspecified* is_transparent;
};

template <> struct less<void> {
    // ...
    typedef *unspecified* is_transparent;
};

在此示例中,std::set std::set std::less>>

对关联容器的影响

值得注意的是,此更改不会影响开箱即用的标准容器的默认操作。它们将继续像往常一样使用它们的键类型作为主要比较标准。

但是,通过利用 std::less

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

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