温故而知新--hashtable
哈希在实际使用中主要是当作私有内存,对数据进行插入和查找,哈希数据元素越多,操作的时候消耗的性能就越到,最明显的是当数据元素达到哈希的容量大小时,插入数据冲突概率会变大,并慢慢的退化为数组。
#include <iostream>
#include <list>
#include <string>
using namespace std;
class CHashTable{
public:
typedef list<int>::iterator ListIter;
private:
list<int> m_Container[3];//三个链表
int HashFunction(const int& v) const;
int m_Count;
public:
CHashTable();
~CHashTable();
void Insert(const int& v);
bool Find(const int& v);
bool Delete(const int& v);
int Count() const;
};
CHashTable::CHashTable(){
m_Count = 0;
}
CHashTable::~CHashTable(){
m_Count = 0;
for(int i=0;i<3;i++){
m_Container[i].clear();
}
}
//哈希计算方法
int CHashTable::HashFunction(const int &v) const{
return v%3;
}
//插入元素
void CHashTable::Insert(const int &v){
m_Container[HashFunction(v)].push_back(v);
m_Count++;
}
//查找元素
bool CHashTable::Find(const int &v){
int iResKey = HashFunction(v);
for(ListIter it = m_Container[iResKey].begin();it != m_Container[iResKey].end();it++){
if(v == *it){
return true;
}
}
return false;
}
bool CHashTable::Delete(const int& v){
int iResKey = HashFunction(v);
for(ListIter it = m_Container[iResKey].begin();it != m_Container[iResKey].end();it++){
if(v == *it){
m_Container[iResKey].erase(it);
m_Count --;
return true;
}
}
return false;
}
int CHashTable::Count() const{
return m_Count;
}
int main(int argc, char *argv[]) {
CHashTable myhash;
//initialise the hash
for(int i=0;i<10;i++){A
myhash.Insert(i);
}
//return the size of hash
std::cout<<"myhash size is:"<<myhash.Count()<<endl; std::cout<<"find the element 5: ";
std::string strText = myhash.Find(5)? "yeah":"oh,no";
std::cout<<strText<<std::endl;
std::cout<<"del the element 5: "<<std::endl;
myhash.Delete(5);
std::cout<<"afther del find the element 5: ";
strText = (myhash.Find(5)? "yeah":"oh,no");
std::cout<<strText<<std::endl;
std::cout<<"myhash size is:"<<myhash.Count()<<endl;
return 0;
}
温故而知新--hashtable的更多相关文章
- HashSet HashTable 与 TreeSet
HashSet<T>类 HashSet<T>类主要是设计用来做高性能集运算的,例如对两个集合求交集.并集.差集等.集合中包含一组不重复出现且无特性顺序的元素. HashSet& ...
- Javascript实现HashTable类
散列算法可以尽快在数据结构中找出指定的一个值,因为可以通过Hash算法求出值的所在位置,存储和插入的时候都按照Hash算法放到指定位置. <script> function HashTab ...
- Java集合专题总结(1):HashMap 和 HashTable 源码学习和面试总结
2017年的秋招彻底结束了,感觉Java上面的最常见的集合相关的问题就是hash--系列和一些常用并发集合和队列,堆等结合算法一起考察,不完全统计,本人经历:先后百度.唯品会.58同城.新浪微博.趣分 ...
- java面试题——HashMap和Hashtable 的区别
一.HashMap 和Hashtable 的区别 我们先看2个类的定义 public class Hashtable extends Dictionary implements Map, Clonea ...
- Map集合及与Collection的区别、HashMap和HashTable的区别、Collections、
特点:将键映射到值的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值. Map集合和Collection集合的区别 Map集合:成对出现 (情侣) ...
- HashTable初次体验
用惯了数组.ArryList,初次接触到HashTable.Dictionary这种字典储存对于我来说简直就是高大上. 1.到底什么是HashTable HashTable就是哈希表,和数组一样,是一 ...
- HashMap和 Hashtable的比较
Hashtable 和 HashMap的比较 1. HashMap可以接受null(HashMap可以接受为null的键值(key)和值(value), HashTable不可以接受为null的键( ...
- hashMap和hashTable的区别
每日总结,每天进步一点点 hashMap和hashTable的区别 1.父类:hashMap=>AbstractMap hashTable=>Dictionary 2.性能:hashMap ...
- SortedList和HashTable
都是集合类,C#中同属命名空间System.Collections,“用于处理和表现类似keyvalue的键值对,其中key通常可用来快速查找,同时key是区分大小写:value用于存储对应于key的 ...
随机推荐
- PAT1117. Eddington Number
思路:搞懂题意是关键–E满足有共有E天骑车的距离超过E米,求最大的E! 将数组排序,我们假设最大的E是e,e满足条件有e天骑车超过e米,并且e+1不满足有e+1天骑车超过e+1米.那么我们可以逆序统计 ...
- 《python机器学习—预测分析核心算法》笔记1
参见原书 1.1-1.4节 一.惩罚线性回归模型 基本特性: 1.训练时间快,使用训练好的模型进行预测的时间也快2.应用于高速交易.互联网广告的植入等3.解决回归.分类问题 最重要的特性:能明确指出, ...
- @EnableAsync @Asnc 以及4种拒绝策略
根据不同的场景,可以选择不同的拒绝策略,如果任务非常重要,线程池队列满了,可以交由调用者线程同步处理. 如果是一些不太重要日志,可以直接丢弃掉. 如果一些可以丢弃,但是又需要知道被丢弃了,可以使用Th ...
- 用线性单元(LinearUnit)实现工资预测的Python3代码
功能:通过样本进行训练,让线性单元自己找到(这就是所谓机器学习)工资计算的规律,然后用两组数据进行测试机器是否真的get到了其中的规律. 原文链接在文尾,文章中的代码为了演示起见,仅根据工作年限来预测 ...
- Redis持久化存储
Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化.redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式:二是Appen ...
- Android线上Bug热修复分析
针对app线上修复技术,目前有好几种解决方案,开源界往往一个方案会有好几种实现.重复的实现会有造轮子之嫌,但分析解决方案在技术上的探索和衍变,这轮子还是值得去推动的 关于Hot Fix技术 Hot F ...
- 解决 Cannot find OpenSSL's <evp.h> 和sasl.h not found!
编译mongodb拓展出现 Cannot find OpenSSL's <evp.h> 解决方法:安装openssl yum install openssl openssl-devel 出 ...
- Ext Designer生成表格
1.生成表格代码 Ext.MyPanel=Ext.extend(Ext.Panel ,{ xtype:"panel", title:"我的面板", width: ...
- FusionWidgets之AngularGauge图
1.设置AngularGauge图的数据源 AngularGauge.xml: <?xml version="1.0" encoding="UTF-8"? ...
- 错误代码: 1045 Access denied for user 'skyusers'@'%' (using password: YES)
1. 错误描述 GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY "."; 1 queries exe ...