unordered_set 模型

匿名 (未验证) 提交于 2019-12-03 00:19:01

1.unordered_set

C++ 11中出现了两种新的关联容器:unordered_set和unordered_map,其内部实现与set和map大有不同,set和map内部实现是基于RB-Tree,而unordered_set和unordered_map内部实现是基于哈希表(hashtable),由于unordered_set和unordered_map内部实现的公共接口大致相同。

模板原型:

  1. templateclass
  2. class
  3. class
  4. class
  5. class

hash<Key>

  1. 整型值:bool、char、unsigned char、wchar_t、char16_t、char32_t、short、int、long、long long、unsigned short、unsigned int、unsigned long、unsigned long long。上述的基本数据类型,其标准库提供的hash函数只是简单将其值转换为一个size_t类型值,具体可以参考标准库functional_hash.h头文件,如下所示:
  1. template<typename
  2. struct
  3. template<typename
  4. structpublicsize_t
  5. size_t
  6. const
  7. returnreinterpret_cast<size_t
  8. template
  9. structpublicsize_t
  10. size_t
  11. const
  12. returnstatic_cast<size_t
  13. bool
  14. char
  15. signedchar
  16. char
  17. wchar_t
  18. short
  19. int
  20. long
  21. longlong
  22. short
  23. int
  24. long
  25. longlong

2.标准库为string类型对象提供了一个hash函数,即:Murmur hash,。对于float、double、long double标准库也有相应的hash函数,这里,不做过多的解释,相应的可以参看functional_hash.h头文件。


  1. #include<bits\stdc++.h>
  2. usingnamespace
  3. struct
  4. size_tintintconst
  5. returnstatic_cast<size_t
  6. int
  7. intint
  8. int
  9. while
  10. for
  11. return
  12. }

equal_to<key>

  1. template<typenametypename
  2. struct
  3. typedef
  4. typedef
  5. template<typename
  6. structpublicbool
  7. bool
  8. constconstconst
  9. return

扩容与缩容

code:
  1. int
  2. "red","green","blue"
  3. if
  4. else
  5. return



文章来源: unordered_set 模型
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!