首页 >后端开发 >C++ >类必须满足哪些关键要求才能用作 std::map 中的键?

类必须满足哪些关键要求才能用作 std::map 中的键?

Patricia Arquette
Patricia Arquette原创
2024-12-08 04:38:11694浏览

What Key Requirements Must a Class Satisfy to Be Used as a Key in std::map?

std::map 的关键要求

在使用 std::map 时,会出现一个关于键类必须具备的特征的常见问题充当有效的密钥。

先决条件非常简单:密钥类必须提供复制和赋值功能。映射内的实际顺序由第三个模板参数或构造函数参数(如果指定)确定。此参数通常默认为 std::less,而 std::less 又默认为小于运算符 (

要自定义键排序,您可以创建一个比较运算符,最好作为函数对象。下面是假设类型 MyType 的此类运算符的示例:

struct CmpMyType
{
    bool operator()(MyType const& lhs, MyType const& rhs) const
    {
        // Implementation of the comparison logic...
    }
};

请注意,此比较运算符必须定义严格的排序。具体来说,如果 CmpMyType()(a, b) 返回 true,则 CmpMyType()(b, a) 必须返回 false。如果两个表达式的计算结果均为 false,则元素被视为相等并且属于同一等价类。通过遵守这些要求,您可以扩展密钥类的功能,以有效地充当 std::map 中的有效密钥。

以上是类必须满足哪些关键要求才能用作 std::map 中的键?的详细内容。更多信息请关注PHP中文网其他相关文章!

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