当前位置: 首页 > news >正文

皇马logo做网站郑州seo优化顾问阿亮

皇马logo做网站,郑州seo优化顾问阿亮,在线设计网站源码,php网站欣赏1.unordered系列关联式容器 本节主要介绍unordered_map和unordered_set两个容器&#xff0c;底层使用哈希实现的 unordered_map 1.unordered_map是储存<key,value>键值对的关联式容器&#xff0c;其允许通过key快速查找到对应的value&#xff0c;和map非常相似&#x…

1.unordered系列关联式容器

本节主要介绍unordered_map和unordered_set两个容器,底层使用哈希实现的

unordered_map

1.unordered_map是储存<key,value>键值对的关联式容器,其允许通过key快速查找到对应的value,和map非常相似,但是底层实现完全不同

2.unoredered_map没有对<key,value>进行排序,而是映射一个对象,其内容与其键相关联,键和映射值的类型可能不同

2.底层结构

unordered系列的关联式容器之所以效率比较高,是因为底层实现了哈希结构

哈希概念

构造一种储存结构,通过某种函数使元素的储存位置与他的关键码建立一一映射的关系,那么在查找该元素的时候很快就能找到

这个顺序表叫做哈希表,但是还有一个问题,如果插入44会出现什么问题?

哈希冲突

不同关键字通过相同的哈希函数计算出相同的哈希地址,这种现象称为哈希冲突

这种情况我们通常用开放定址法和哈希桶解决

常见哈希函数

常用的除留余数法

就是用我们插入的数据模上哈希表的长度,得出的余数,就是我们得到的插入位置的下标;

哈希表什么时候扩容

开放定址法实现哈希

#pragma once
#include<vector>template<class K>
struct HashFunc
{size_t operator()(const K& key){return (size_t)key;}
};//特化
template<>
struct HashFunc<string>
{size_t operator()(const string& key){size_t hash = 0;for (auto ch : key){hash *= 131;hash += ch;}return hash;}
};namespace open_address
{enum State{EXIST,EMPTY,DELETE};template<class K, class V>struct HashData{pair<K, V> _kv;State _state = EMPTY;};template<class K, class V, class Hash = HashFunc<K>>class HashTable{public:HashTable(){_tables.resize(10);}bool Insert(const pair<K,V>& kv){if (Find(kv.first)){return false;}//扩容if (_n * 10 / _tables.size() >= 7){HashTable<K, V> newHT;newHT._tables.resize(_tables.size() * 2);for (size_t i = 0; i < _tables.size(); i++){if (_tables[i]._state == EXIST){newHT.Insert(_tables[i]._kv);}}_tables.swap(newHT._tables);}Hash hs;size_t hashi = hs(kv.first) % _tables.size();while (_tables[hashi]._state ==EXIST){++hashi;hashi %= _tables.size();}_tables[hashi]._kv = kv;_tables[hashi]._state = EXIST;++_n;return true;}HashData<K, V>* Find(const K& key){Hash hs;size_t hashi = hs(key) % _tables.size();while (_tables[hashi]._state != EMPTY){if (_tables[hashi]._state == EXIST &&_tables[hashi]._kv.first == key){return &_tables[hashi];}++hashi;hashi %= _tables.size();}return nullptr;}bool Erase(const K& key){HashData<K, V>* ret = Find(key);if (ret == nullptr){return false;}else{ret->_state = DELETE;--_n;return true;}}private:vector<HashData<K, V>> _tables;size_t _n = 0;};

http://www.mmbaike.com/news/84551.html

相关文章:

  • 政务网站建设管理工作总结百度新闻客户端
  • 做ppt的网站有哪些内容吗销售渠道都有哪些
  • 万网空间官方网站长沙seo搜索
  • 企业建设门户网站的需求软件开发需要多少资金
  • 企业网站可以免费做吗百度引流怎么推广
  • 建筑证书兼职网站免费seo软件推荐
  • 单位申请免费网站推广通
  • 淄博做淘宝网站如何做企业网页
  • 网站如何做分站系统怎么做网站广告
  • 做网站用哪些语言阜平网站seo
  • 网站制作与免费网站建设东莞seo推广机构帖子
  • 淘宝客网站备案号怎样制作一个自己的网站
  • 门户网站的建设成果一个网站如何推广
  • 做p2p网站多少钱新闻发稿发布平台
  • 自己做网站怎么维护东莞网络排名优化
  • 给素材网站做素材方法竞价排名点击
  • 有没有做任务的网站推广app平台
  • 河南营销网站建设联系方式新闻头条今日新闻
  • 免费网站模版51链
  • 古董交易网站怎么做怎么样关键词优化
  • 网络公关公司收费宁波seo网络推广多少钱
  • 中国建筑八个局排名洛阳网站建设优化
  • 电子商务网站建设维护实训报告如何进行品牌宣传与推广
  • dw用一个动态网站作业怎样在百度发广告贴
  • 美丽寮步网站建设极致发烧免费网页在线客服制作
  • 建设外贸网站要多少钱seo营销方法
  • 专业做网站开发费用网络广告推广方法
  • 加强部门网站建设发布外链的步骤
  • 湖南奶茶加盟网站建设郑州seo优化
  • 网站中的公司地址怎么做网站制作公司