关键是指针的 std::map 是否取消引用指针,或者您是否需要自定义比较器?

2024-03-25

我有一个问题,当用作映射中的键时,如何处理指向自定义对象的指针。更具体地说,如果我定义

std::map< CustomClass*, int > foo;

默认的 C++ 实现可以处理这些指针吗?或者我是否需要定义一个自定义比较器函数来处理它?一般来说,使用指向对象的指针作为键是一个好的做法吗?


默认实现将比较指针存储的地址,因此不同的对象将被视为不同的键。但是,不会考虑对象的逻辑状态。例如,如果您使用std::string *作为关键,两个不同的std::string具有相同文本的对象"Hello"将被视为不同的密钥! (当按地址存储在地图中时)

只要您理解上面的重要区别,就可以使用指针作为键。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关键是指针的 std::map 是否取消引用指针,或者您是否需要自定义比较器? 的相关文章

随机推荐