#include <hash_set>
#include <iostream>
using namespace std;
int main()
{
hashtable<int,
int,
hash<int>,
identify<int>,
equal_to<int>,
alloc> iht(,hash<int>,equal_to<int>()); //指定保留50个bucket(桶)
cout<<iht.size()<<endl; //
cout<<iht.bucket_count()<<endl; //53这是STL提供的最小质数
cout<<iht.max_bucket_count()<<endl; // iht.insert_unique();
iht.insert_unique();
iht.insert_unique();
iht.insert_unique();
iht.insert_unique();
iht.insert_unique();
cout<<iht.size()<<endl; //6,此即hashtable<T>::num_elements /*一下声明一个hashtable迭代器*/
hashtable<int,
int,
hash<int>,
identify<int>,
equal_to<int>,
alloc>::iterator ite = iht.begin(); for(int i = ;i<iht.size();i++,ite++)
cout<< *ite<<<' '; //输出:53 55 2 108 59 63 并没有顺序
cout<<endl; /*遍历所有buckets,如果其节点个数不为0,就打印节点个数,为0不打印*/
for(int i = ;i<iht.bucket_count();i++)
{
int n = iht.elem_in_bucket(i);
if(n!=)
cout<<"bucket["<<i<<"] has"<<n<<" elems."<<endl;
}
/*
输出:
bucket[0] has 1 elems.
bucket[2] has 3 elems.
bucket[6] has 1 elems.
bucket[10] has 1 elems.
*/ /*为了验证“bucket(list)”的容量就是buckets vector的大小(这是从
hashtable<T>::resize()得知的结果),我刻意将元素加到54个,
看看是否发生重建表*/ for(int i = ;i<;i++)
iht.insert_equal(i);
cout<<iht.size()<<endl; //
cout<<iht.buck_count()<<endl; //97确实扩容了(重建) for (inti; i<iht.bucket_count();i++ )
{
int n = iht.elems_in_bucket(i);
if(n!=)
cout<<"bucket["<<i<<"] has"<<n<<" elems."<<endl;
}
/*打印的结果
bucket[2]到bucket[11]的节点个数为2
其余的bucket[0]~bucket[47]的节点个数为1
此外,bucket[53],[55],[59],[63]的节点个数均为1*/ /*以迭代器变量hashtable,将所有节点打印出来*/
ite = iht.begin();
for(int i = ;i<iht.size();i++,ite++)
cout<< *ite<<<' ';
cout<<endl; cout<<*(iht.find())<<endl;//
cout<<iht.count()<<endl;//
return ;
}

hashtable的运用实例的更多相关文章

  1. C# 哈希表(Hashtable)用法笔记

    一.什么是Hashtable? Hashtable 类代表了一系列基于键的哈希代码组织起来的键/值对.它使用键来访问集合中的元素. 当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值.哈 ...

  2. HashTable类

    HashTable类不紧可以像Vector类一样动态的存储一系列的对象,而且对存储的每一个对象(称为值)都安排另一个对象(称为关键字)与它相关联. 用做关键字的类必须覆盖Object.hashCode ...

  3. ASP.NET 缓存技术分析

    缓存功能是大型网站设计一个很重要的部分.由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.可能的情况下尽量使用缓存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大 ...

  4. ASP.NET Cache

    ASP.NET为了方便我们访问Cache,在HttpRuntime类中加了一个静态属性Cache,这样,我们就可以在任意地方使用Cache的功能. 而且,ASP.NET还给它增加了二个“快捷方式”:P ...

  5. 细说 ASP.NET Cache 及其高级用法

    许多做过程序性能优化的人,或者关注过程程序性能的人,应该都使用过各类缓存技术. 而我今天所说的Cache是专指ASP.NET的Cache,我们可以使用HttpRuntime.Cache访问到的那个Ca ...

  6. Log4net 配置注意事项

    1. 首先引入Log4net程序集 2.修改webconfig配置文件 在 configuration 节点下面添加如下节点 <configSections> <section na ...

  7. 细说 ASP.NET Cache 及其高级用法【转】

    阅读目录 开始 Cache的基本用途 Cache的定义 Cache常见用法 Cache类的特点 缓存项的过期时间 缓存项的依赖关系 - 依赖其它缓存项 缓存项的依赖关系 - 文件依赖 缓存项的移除优先 ...

  8. C#基础复习(4) 之 浅析List、Dictionary

    参考资料 [1] .netCore 源码 https://github.com/dotnet/corefx [2] <Unity 3D脚本编程 使用C#语言开发跨平台游戏>陈嘉栋著 [3] ...

  9. [转]细说 ASP.NET Cache 及其高级用法

    本文转自:http://www.cnblogs.com/fish-li/archive/2011/12/27/2304063.html 阅读目录 开始 Cache的基本用途 Cache的定义 Cach ...

随机推荐

  1. 详解spl_autoload_register()  函数(转)

    原文地址:http://blog.csdn.net/panpan639944806/article/details/23192267 在了解这个函数之前先来看另一个函数:__autoload. 一._ ...

  2. pat 1022 digital library

    #include <iostream> #include <sstream> #include <string> #include <vector> # ...

  3. PostgreSQL版本快速升级

    PostgreSQL版本快速升级 写在前面 PostgreSQL9.5版本支持数据分片的功能,为以后做分布式考虑,准备将生产环境的9.1版本升级至9.5.中间需要做数据迁移. 在迁移操作中,为保证数据 ...

  4. substr与substring的用法

    substr substr() 方法返回一个字符串中从指定位置开始到指定字符数的字符. 语法 str.substr(start[, length]) 参数 strat 开始提取字符的位置.如果为负值, ...

  5. canvas将图片转为base64

    最简例子 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta ...

  6. 高通HAL层之Sensor HAL

    高通的HAL层其实分为两种,一种是直接从kernel这边报数据上来的,由sensor HAL层来监听,另一种是走ADSP的模式,HAL层是通过qmi的形式进行监听的: 走ADSP架构的可以看下面的博客 ...

  7. centos yum方式安装net-snmp v3

    SNMPv3的安全报头采用用户安全模式(USM),其提供具有机密性和完整性的网络管理通信.机密性通过采用数据加密标准(DES)来提供.尽管 这一算法以脆弱性著称(由于它采用的是40位的密钥),但与明文 ...

  8. yum安装centos系统依赖库

    安装centos系统依赖库,安装软件过程中,经常需要的一些库,可以在编译安装软件前执行如下命令: 首先更新系统(这步可以不执行) yum -y update 这种更新是全部更新,但是有时一些软件不想更 ...

  9. python学习--Linux下dlib安装(主要是cmake和boost的安装)

    昨天我们使用了dlib和opencv进行了人脸检测标注(http://www.cnblogs.com/take-fetter/p/8310298.html) 但是运行环境是基于windows的而且可能 ...

  10. BZOJ 3624: [Apio2008]免费道路 [生成树 并查集]

    题意: 一张图0,1两种边,构造一个恰有k条0边的生成树 优先选择1边构造生成树,看看0边是否小于k 然后保留这些0边,补齐k条,再加1边一定能构成生成树 类似kruskal的证明 #include ...