温故而知新--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的 ...
随机推荐
- python+flask:实现POST接口功能
1.首先需要安装python和flask,这个是必须的嘛. 2.我们这里实现的是一个POST功能的简单接口. from flask import Flask, request, jsonify imp ...
- SpringBoot中关于Mybatis使用的三个问题
SpringBoot中关于Mybatis使用的三个问题 转载请注明源地址:http://www.cnblogs.com/funnyzpc/p/8495453.html 原本是要讲讲PostgreSQL ...
- scrapy的学习总结(1)
1.xpath和css的节点的共同结合使用是一个挺好的使用过程,还有就是配合正则表达式的使用,这个也是很重要的.解决任何一个问题都会有不同方法.学会思考的解决问题. 2.item的数据抽取,pipel ...
- ubuntu14.04 安装Jenkins
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add - sudo sh -c 'ec ...
- java-数据库连接,分层实现增删改查测试
成员属性类: public class Dog { private int number; private String name; private String strain; private St ...
- SQL Server 批量插入
使用场景 在项目中,涉及到数据库表变更时,可能会需要将一个或多个表中的数据迁移到另一个表中. 这时用sql去执行会很方便! sql语句 //SQL批量插入 create table #ttableNa ...
- 远程控制你的智能电视,按键|输入|安装App等都已实现,已开源!
一.序 Hi,大家好,我是承香墨影! 智能电视或者智能盒子,不知道大家了解多少? 这两年各大厂商生产的电视设备,基本上都是搭载的 Android 系统.既然电视本身就是 Android 系统的,我们也 ...
- Android设备唯一码的获取
Android设备唯一码的获取 UTDID是集团无线设备统一ID方案,目的是给每一台设备一个ID,作为唯一标识.UTDID由客户端生成,并在设备中各个客户端之间共享.UTDID的生成中包含时间戳和随机 ...
- 使用poi和jfreechart生成excel图表图片
最近项目在频繁的操作excel,里边涉及到很多和图表有关的东西.有时候需要使用java操作excel自带的图标,比较复杂的我们都是使用excel模板的形式实现. 除此之外,也有一些功能只需要生成对应的 ...
- mongodb3.0副本集搭建补充~~非admin数据库的用户权限
之前有搭建mongodb3.0的副本集,不过当时直接使用的admin数据库,用户也是直接给的root. 链接:http://blog.csdn.net/tuzongxun/article/detail ...