C++STLunordered_map unordered_set的使用和解析(c++STL相关)

unordered_map unordered_set以hash table为基础,效率是惊人的,跟容量存储数量无关,内部元素没有明显的顺序

优点:

1、查找速度快 遍历也快

缺点:

1、元素无序
2、平均算法是常数,但极端序列元素性能会下降。
3、空间可能会不紧凑。
4、元素在1千万以下不如unorderd但1千万以上不如二叉树,因为有大量重复的key。

以下是使用该类容器需要注意的地方:

1、equal_to用来判断两个不同的key的hash值是否一样
2、使用unordered_map之类的无序容器的时候需要实现一个hash算法,可以用模板特化来实现以下是针对Position写的一个模板特化一个类的例子用x+y作为hash key:
C++STLunordered_map unordered_set的使用和解析(c++STL相关)_第1张图片
在这里插入图片描述
可以用以下方法产生hash因子减少冲突
C++STLunordered_map unordered_set的使用和解析(c++STL相关)_第2张图片
更好的方法:
C++STLunordered_map unordered_set的使用和解析(c++STL相关)_第3张图片
以下关于unordered_map完整解析:
C++STLunordered_map unordered_set的使用和解析(c++STL相关)_第4张图片
C++STLunordered_map unordered_set的使用和解析(c++STL相关)_第5张图片
C++STLunordered_map unordered_set的使用和解析(c++STL相关)_第6张图片

你可能感兴趣的:(C++asio服务器开发,c++,stl)