unordered_map和unordered_set是C11中新增的类型,特性与STL 中的map和set特性一样,但是底层不是用红黑树实现的,而是用哈希表来实现的,因此不再实现对容器中元素排序的功能。
下面这段话引用自:
http://blog.csdn.net/truexf/article/details/17303263
哈希表存储元素的查找效率不太稳定,取决于所使用的哈希算法。不同的元素数量,不同的哈希算法都对性能有很大的影响。
不同的操作系统,不同的运行库,虚拟内存管理算法,以及运行库的malloc和free的内部实现都是有差异的。如何找出最有效率的使用标准库容器的方式,一定要结合这一点进行大量的测试才能得出。
有一点可以确认的是:各个标准库的实现,已经是在遵循c++标准的基础上,在性能和适用性上可以说做到了极致。因此很多人总想自己造重复的轮子是大可不必。理解好各种容器的实现原理,再结合实际应用的需求,选择合适的容器,以及容器的使用方式,才是上上之策。