25. 熟悉非标准的哈希容器

C++ 11中已经引入了hash容器包括:

  • unordered_set
  • unordered_multiset
  • unordered_map
  • unordered_multimap

unordered_set的底层类hash_set的类声明为:

template <class _Value,
          class _HashFcn  __STL_DEPENDENT_DEFAULT_TMPL(hash<_Value>),
          class _EqualKey __STL_DEPENDENT_DEFAULT_TMPL(equal_to<_Value>),
          class _Alloc =  __STL_DEFAULT_ALLOCATOR(_Value) >
class hash_set;

set的类声明为:

template <class _Key, class _Compare __STL_DEPENDENT_DEFAULT_TMPL(less<_Key>),
          class _Alloc = __STL_DEFAULT_ALLOCATOR(_Key) >
class set;

注意hash容器与关联容器的区别:

  • hash容器是基于hash函数的,hash容器对相同元素的判断是基于相等,使用的排序规则默认为std::equal_to<>。其元素不是以排序方式存放的。

  • 关联容器是基于红黑树的,对相同元素的判断基于等价,使用的排序规则默认为std::less<>。元素是基于排序存放的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值