C++ std::unordered_map使用及如何自定义键的类型
-
头文件:<unordered_map>
-
定义:
template<class _Key, class _Tp, class _Hash = hash<_Key>, class _Pred = std::equal_to<_Key>, class _Alloc = std::allocator<std::pair<const _Key, _Tp> > > class unordered_map{...} _Hash = hash<_Key> 由于std::unordered_map 使用哈希算法,将值存储到桶中,如果自定义键的类型,需要实现对应方法。如果使用基本类型则不用提供 _Pred = std::equal_to<_Key> 由于hash算法可能会遇到hash值相同,但内容不同的情况,提供函数来区分 _Alloc = std::allocator<std::pair<const _Key, _Tp> > >则是内存管理使用,一般来说使用默认的内存管理即可
-
公共定义的类型
/// Public typedefs. typedef typename _Hashtable::key_type key_type; //键类型 typedef typename _Hashtable::value_type value_type; // std::Pair<const _Key k, _Tp t> typedef typename _Hashtable::mapped_type mapped_type;//值的类型 typedef typename _Hashtable::hasher hasher; typedef typename _Hashtable::key_equal key_equal; typedef typename _Hashtable::allocator_type allocator_type;
-
构造函数
void testCreateMap(){ using Group = std::unordered_map<int,std::strin