您的位置:首页 > 编程语言 > C语言/C++

[C++] STL里面的map

2005-11-09 10:16 393 查看
STL里面的map并不是哈希表,这对于习惯了MFC里面CMap的人可能有点不习惯。STL里面的map仅仅是棵红黑树。
除非你对程序的效率毫不关心,否则你就应该使用stlex里面的hash_map代替stl里面的map。因为他们做着非常类似的工作,而且他们的调用方法几乎一样。

hash_map需要对key取hash值,我想这应该不会是问题。我们在实际应用中,通常只会用数值、指针或者字符串作为key,这些东西都是很容易hash的。实际上,用object作为key反而容易出现问题,大多数人并不鼓励在C++里面用object做key。

说远一点,C#里面倒是非常开心的一直用object做着哈希表的key,这是为什么呢?这是因为C#是一个单根体系,所有的class都是从System.Object派生出来的,而System.Object实现了GetHashCode方法。这迫使C#中所有的对象,要么采用基类的GetHashCode方法,要么实现自己的GetHashCode方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: