[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方法。
除非你对程序的效率毫不关心,否则你就应该使用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方法。
相关文章推荐
- [C++] STL里面的map
- C++ 标准模板库STL中map用法介绍
- C++中的STL中map用法详解
- C/C++--STL中list,vector,deque,map,set区别、联系和使用场景
- C++ STL一一map和multimap
- C++ STL hash_map
- C++中的STL中map用法详解
- C++学习 STL之六:map/multimap用法详解
- C++ STL中哈希表 hash_map介绍
- C++ STL中Map的按Key排序和按Value排序
- C++(15)STL实践与分析之Map类型
- STL 之 C++ Map容器的简单使用方法
- [C++::STL]之map的用法
- C++ STL--map映照容器学习笔记
- c++stl中的map/multimap
- C++ STL中哈希表 hash_map介绍
- C++中的unordered_map,以及与STL中的map的比较
- 使用C++STL的map容器实现一种命令映射
- HDOJ 2736 Surprising Strings——c++STL(map)
- c++: C++中的STL中map用法详解