首页  >  文章  >  后端开发  >  任何类都可以作为 std::map 的键吗?

任何类都可以作为 std::map 的键吗?

Patricia Arquette
Patricia Arquette原创
2024-11-26 08:05:11184浏览

Can Any Class Serve as a Key for std::map?

std::map 的键:要求和实现

当使用 std::map 映射不同类的对象时,您使用的类打算用作密钥可能无法满足有效密钥的必要要求。 std::map 使用排序机制组织其内容,这提出了是否任何任意类都可以作为键或者是否存在特定要求的问题。

std::map 的键必须遵守以下规则要求:

  • 可复制性和可分配性:键类必须能够被复制和

映射的排序由第三个模板参数或构造函数参数控制,默认为 std::less。默认情况下,std::less利用

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

确保您的比较运算符定义严格的顺序。如果 CmpMyType()( a, b ) 返回 true,则 CmpMyType()( b, a ) 必须返回 false。当两者都返回 false 时,元素被认为是等效的并且属于同一等价类。

以上是任何类都可以作为 std::map 的键吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

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