1.unordered_set
C++ 11中出现了两种新的关联容器:unordered_set和unordered_map,其内部实现与set和map大有不同,set和map内部实现是基于RB-Tree,而unordered_set和unordered_map内部实现是基于哈希表(hashtable),由于unordered_set和unordered_map内部实现的公共接口大致相同。
- templateclass
- class
- class
- class
- class
hash<Key>
- 整型值: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头文件,如下所示:
- template<typename
- struct
- template<typename
- structpublicsize_t
- size_t
- const
- returnreinterpret_cast<size_t
- template
- structpublicsize_t
- size_t
- const
- returnstatic_cast<size_t
- bool
- char
- signedchar
- char
- wchar_t
- short
- int
- long
- longlong
- short
- int
- long
- longlong
2.标准库为string类型对象提供了一个hash函数,即:Murmur hash,。对于float、double、long double标准库也有相应的hash函数,这里,不做过多的解释,相应的可以参看functional_hash.h头文件。
- #include<bits\stdc++.h>
- usingnamespace
- struct
- size_tintintconst
- returnstatic_cast<size_t
- int
- intint
- int
- while
- for
- return
- }
equal_to<key>
- template<typenametypename
- struct
- typedef
- typedef
- template<typename
- structpublicbool
- bool
- constconstconst
- return
扩容与缩容
code:
- int
- "red","green","blue"
- if
- else
- return
文章来源: unordered_set 模型