boost库------>unordered_set(散列容器)

    散列容器(hash container)是一种非常重要的容器类型,它通常比二叉树的存储方式可以提供更高的访问效率。因为散列容器是无序的,因此不需要容器提供operator<,而是使用散列函数和键值比较的operator==,比标准容器的要求略微放宽一些。

    unordered库提供两个散列集合类unordered_set和unordered_multiset,它们的用法接口和用法与C++标准里的关联容器set/multiset相同,只是内部使用散列表代替二叉树实现,因此查找复杂度由对数将为常数。

     下面给出unordered_set的基本大的框架,其实是并没有这么简单的。。。。。

 

 上述的图中只是给出了主的大框架,还有很多的类其实没有给出例如hash_node类,hash_node_constructor类等等并没有在图中体现。

   首先给出unordered_set<T,H,P,A>中的参数都是代表什么含义:

   T代表了键值类型,

   H代表散列函数,该类里面默认使用boost::hash,

   P代表键值的比较,默认使用std::equal_to<>

   A代表空间配置器,默认使用系统的空间配置器

 从上图可以看出,unordered_set类将类hash_unique_table的对象作为自己的数据成员,实现了类与类之间的通信,然而类hash_unique_table继承与hash_table,hash_table类继承与hash_buckets,hash_buffered_functions类,从大的框架来看各个类的功能都很明确.

  针对类unordered_set大概有以下的接口函数:

     (1)begin:指定受控序列的开头。(返回为普通迭代器)

     (2)end:指定受控序列的结尾。(同样返回为普通迭代器)

     (3)cbegin:同样返回受控序列的开头。(返回为常量迭代器)

     (4)cend:返回受控序列的结尾。(返回为常量迭代器)

     (5)empty:检测元素是否存在。

     (6)size:对元素进行计数。

      (7)max_size:获取受控序列的最大大小。

      (8)emplace:添加就地构造的元素。

           emplace直接用参数构造元素并放入容器,返回值为一个对组(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值