Mar*_*ies 7 c++ java equals map hashcode
在Java中,我们使用了hashCode()和equals()等方法,地图使用这些方法来标识每个对象.C++没有这样的基本方法,默认情况下每个对象都实现.
地图现在如何使用自定义对象作为键值?
编辑:没有重复,因为它特别针对那些特定于Java的接口方法,以前没有用C++做过的人会寻找
Dav*_*vid 7
首先,std::mapC++中的一般是红黑树,而不是哈希表.在C++ 11中还有一个名为哈希映射的哈希映射std::unordered_map.默认情况下,它用于operator<比较元素.您还可以插入自定义比较器,可以使用您想要的任何内容进行比较.这是通过使用可选的第3个模板参数来完成的std::map.
std::map
std::unordered_map
operator<
jua*_*nza 6
C++ std::map是一个有序映射,其要求意味着它被实现为自平衡二进制搜索树(通常是红黑树).这意味着密钥类型必须具有某种严格的弱排序,它可以以less-than运算符的形式出现,或者作为用户定义的比较仿函数.
less-than
有很多关于如何使用std::map用户定义类型作为键的SO帖子(参见这里的一个例子).
C++ 11有std::unordered_map一个哈希表,它对键类型有不同的要求(具体来说,需要哈希函数和相等比较)
归档时间:
11 年,8 月 前
查看次数:
1832 次
最近记录: