STL源码分析 unordered_set容器

源代码来自sgi-2.91版本stl_hash_set.h

unordered_set总述

先了解hash表

(1)底层实现完全由hash表代替,最开始叫做hash_set,从实现原理来说unordered_set应该被称为容器适配器

(2)对底层hash表来说,键值就是实值

(3)hash表没有自动排序,所以相对于set,unordered_set没有自动排序

(4)unordered_set适合用于只查找元素的情况

unordered_set类

#ifndef __STL_LIMITED_DEFAULT_TEMPLATES
template <class Value, class HashFcn = hash<Value>,		//hash函数来对元素编号
          class EqualKey = equal_to<Value>,			//比较==函数
          class Alloc = alloc>		//allco分配器
#else
template <class Value, class HashFcn, class EqualKey, class Alloc = alloc>		//自定义参数
#endif
class hash_set
{
   
   
private:
  typedef hashtable<Value, Value, HashFcn, identity<Value>, 
                    EqualKey, Alloc> ht;	//申明hash表
  ht rep;		//创建hash表

public:
  typedef typename ht::key_type key_type;
  typedef typename ht::value_type value_type;
  typedef typename ht::hasher hasher;
  typedef typename ht::key_equal key_equal;

  typedef typename ht::size_type size_type;
  typedef typename ht::difference_type difference_type;
  typedef typename ht::const_pointer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值