hashtable的运用实例
#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的运用实例的更多相关文章
- C# 哈希表(Hashtable)用法笔记
一.什么是Hashtable? Hashtable 类代表了一系列基于键的哈希代码组织起来的键/值对.它使用键来访问集合中的元素. 当您使用键访问元素时,则使用哈希表,而且您可以识别一个有用的键值.哈 ...
- HashTable类
HashTable类不紧可以像Vector类一样动态的存储一系列的对象,而且对存储的每一个对象(称为值)都安排另一个对象(称为关键字)与它相关联. 用做关键字的类必须覆盖Object.hashCode ...
- ASP.NET 缓存技术分析
缓存功能是大型网站设计一个很重要的部分.由数据库驱动的Web应用程序,如果需要改善其性能,最好的方法是使用缓存功能.可能的情况下尽量使用缓存,从内存中返回数据的速度始终比去数据库查的速度快,因而可以大 ...
- ASP.NET Cache
ASP.NET为了方便我们访问Cache,在HttpRuntime类中加了一个静态属性Cache,这样,我们就可以在任意地方使用Cache的功能. 而且,ASP.NET还给它增加了二个“快捷方式”:P ...
- 细说 ASP.NET Cache 及其高级用法
许多做过程序性能优化的人,或者关注过程程序性能的人,应该都使用过各类缓存技术. 而我今天所说的Cache是专指ASP.NET的Cache,我们可以使用HttpRuntime.Cache访问到的那个Ca ...
- Log4net 配置注意事项
1. 首先引入Log4net程序集 2.修改webconfig配置文件 在 configuration 节点下面添加如下节点 <configSections> <section na ...
- 细说 ASP.NET Cache 及其高级用法【转】
阅读目录 开始 Cache的基本用途 Cache的定义 Cache常见用法 Cache类的特点 缓存项的过期时间 缓存项的依赖关系 - 依赖其它缓存项 缓存项的依赖关系 - 文件依赖 缓存项的移除优先 ...
- C#基础复习(4) 之 浅析List、Dictionary
参考资料 [1] .netCore 源码 https://github.com/dotnet/corefx [2] <Unity 3D脚本编程 使用C#语言开发跨平台游戏>陈嘉栋著 [3] ...
- [转]细说 ASP.NET Cache 及其高级用法
本文转自:http://www.cnblogs.com/fish-li/archive/2011/12/27/2304063.html 阅读目录 开始 Cache的基本用途 Cache的定义 Cach ...
随机推荐
- 锋利的jQuery笔记
首先分清jQuery对象和DOM对象,这两者可相互转化,如: var $cr=$("#cr"); //jquery对象 var cr=$cr[0] ; //DOM对象 var cr ...
- 【转】awk 里的substr函数用法举例
awk 里的substr函数用法举例: 要截取的内容:2007-08-04 04:45:03.084 - SuccessfulTradeResult(status: 1, currencyPair: ...
- TCP粘包和拆包问题
问题产生 一个完整的业务可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这个就是TCP的拆包和封包问题. 下面可以看一张图,是客户端向服务端发送包: 1. 第一种情况 ...
- spark头脑镜像
思考是一件有意思的事情.遇到问题,思考出结论,那么脑子里面的过程是什么呢,或者脑子里面是什么呢.我一直认为,这团团的里面是一个模糊的n维空间.理解一个复杂的系统.公式.算法,都要在这个n维空间里具象化 ...
- 有关mysql的for update以及 死锁问题
一.先说锁的概念 锁级别: 1.行级锁: InnoDB引擎(也支持表级锁,默认是行级锁),开销大,加锁慢:会出现死锁.锁定粒度最小,发生锁冲突的概率最低,并发度最高. 2.表级锁:MylSAM引擎和M ...
- 关于HDPHP,HDCMS 安装,空白问题
这几天,框论坛发现,HDPHP,号称还不错. 微信,支付宝支付,短信,阿里云OSS,权限认证等,都有.对开发人员来说很好了.. 马上下载来试试, HDPHP官方文档说需要PHP5.6,不过貌似我5.5 ...
- JAVA 调用 R 语言
1 简介 R是统计计算的强大工具,而JAVA是做应用系统的主流语言,两者天然具有整合的需要.关于整合,一方面,R中可以创建JAVA对象调用JAVA方法,另一方面,JAVA中可以转换R的数据类型调用R的 ...
- SpringMVC源码情操陶冶-AbstractUrlHandlerMapping
承接前文SpringMVC源码情操陶冶-AbstractHandlerMapping,前文主要讲解了如何获取handler处理对象,本文将针对beanName注册为handler对象作下解析 Abst ...
- bzoj 1975: [Sdoi2010]魔法猪学院 [k短路]
1975: [Sdoi2010]魔法猪学院 裸题... 被double坑死了 #include <iostream> #include <cstdio> #include &l ...
- Windows Azure Storage (25) Azure Append Blob
<Windows Azure Platform 系列文章目录> 在笔者之前的文章中,我们介绍了Azure Blob 有两种:Block Blob和Page Blob. 在这里笔者介绍Blo ...