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

网站密码管理制度wordpress php转html

网站密码管理制度,wordpress php转html,图标设计在线生成,平顶山建设局网站文章目录 1. 哈希表的改造2. unordered_map3. unordered_set C STL 库中#xff0c;unordered_map 和 unordered_set 容器的底层为哈希表#xff0c;本文将简单模拟哈希表#xff08;哈希桶#xff09;#xff0c;unordered_map 和 unordered_set 只需封装哈希表的接口即可… 文章目录 1. 哈希表的改造2. unordered_map3. unordered_set C STL 库中unordered_map 和 unordered_set 容器的底层为哈希表本文将简单模拟哈希表哈希桶unordered_map 和 unordered_set 只需封装哈希表的接口即可实现。 1. 哈希表的改造 模板参数列表的改造 K关键码类型T不同容器 T 的类型不同如果是 unordered_mapT 代表一个键值对如果是 unordered_setT 为 KKeyOfT从 T 中获取 KeyHash哈希函数仿函数对象类型哈希函数使用除留余数法需要将 Key 转换为整型数字才能取模 templateclass K, class T, class KeyOfT, class Hash class HashTable;增加迭代器操作 // 为了实现简单在哈希桶的迭代器类中需要用到HashTable本身 templateclass K, class T, class KeyOfT, class Hash class HashTable;// 注意因为哈希桶在底层是单链表结构所以哈希桶的迭代器不需要--操作 templateclass K, class T, class KeyOfT, class Hash struct __HTIterator {typedef HashNodeT Node;typedef HashTableK, T, KeyOfT, Hash HT;typedef __HTIteratorK, T, KeyOfT, Hash Self;Node* _node; // 当前迭代器关联的节点HT* _ht; // 哈希桶 - 主要是为了找下一个空桶时候方便__HTIterator(Node* node, HT* ht): _node(node), _ht(ht){}T operator*(){return _node-_data;}Self operator(){if (_node-_next){// 当前桶还是节点_node _node-_next;}else{// 当前桶走完了找下一个桶KeyOfT kot;Hash hs;size_t hashi hs(kot(_node-_data)) % _ht-_tables.size();// 找下一个桶hashi;while (hashi _ht-_tables.size()){if (_ht-_tables[hashi]){_node _ht-_tables[hashi];break;}hashi;}// 后面没有桶了if (hashi _ht-_tables.size()){_node nullptr;}}return *this;}bool operator!(const Self s){return _node ! s._node;} };增加通过 T 获取 key 操作 templateclass K, class T, class KeyOfT, class Hash class HashTable {templateclass K, class T, class KeyOfT, class Hashfriend struct __HTIterator;typedef HashNodeT Node;public:typedef __HTIteratorK, T, KeyOfT, Hash iterator;iterator begin(){for (size_t i 0; i _tables.size(); i){// 找到第一个桶的第一个节点if (_tables[i]){return iterator(_tables[i], this);}}return end();}iterator end(){return iterator(nullptr, this);}HashTable(){_tables.resize(10, nullptr);_n 0;}~HashTable(){for (size_t i 0; i _tables.size(); i){Node* cur _tables[i];while (cur){Node* next cur-_next;delete cur;cur next;}_tables[i] nullptr;}}bool Insert(const T data){KeyOfT kot;if (Find(kot(data)))return false;Hash hs;// 负载因子到1就扩容if (_n _tables.size()){vectorNode* newTables(_tables.size() * 2, nullptr);for (size_t i 0; i _tables.size(); i){// 取出旧表中节点重新计算挂到新表桶中Node* cur _tables[i];while (cur){Node* next cur-_next;// 头插到新表size_t hashi hs(kot(cur-_data)) % newTables.size();cur-_next newTables[hashi];newTables[hashi] cur;cur next;}_tables[i] nullptr;}_tables.swap(newTables);}size_t hashi hs(kot(data)) % _tables.size();Node* newnode new Node(data);// 头插newnode-_next _tables[hashi];_tables[hashi] newnode;_n;return true;}Node* Find(const K key){KeyOfT kot;Hash hs;size_t hashi hs(key) % _tables.size();Node* cur _tables[hashi];while (cur){if (kot(cur-_data) key){return cur;}cur cur-_next;}return nullptr;}bool Erase(const K key){KeyOfT kot;Hash hs;size_t hashi hs(key) % _tables.size();Node* prev nullptr;Node* cur _tables[hashi];while (cur){if (kot(cur-_data) key){// 删除if (prev){prev-_next cur-_next;}else{_tables[hashi] cur-_next;}delete cur;--_n;return true;}prev cur;cur cur-_next;}return false;}private:vectorNode* _tables; // 指针数组size_t _n; };2. unordered_map unordered_map 中存储的是 pairK, V 的键值对K 为 key 的类型V 为 value 的类型Hash 为哈希函数类型unordered_map 在实现时只需将 HashTable 中的接口重新封装即可 templateclass K, class V, class Hash HashFuncK class unordered_map {// 通过T获取key的操作struct MapKeyOfT{const K operator()(const pairK, V kv){return kv.first;}};public:typedef typename hash_bucket::HashTableK, pairconst K, V, MapKeyOfT, Hash::iterator iterator;iterator begin(){return _ht.begin();}iterator end(){return _ht.end();}bool insert(const pairK, V kv){return _ht.Insert(kv);}private:hash_bucket::HashTableK, pairconst K, V, MapKeyOfT, Hash _ht; };3. unordered_set unordered_set 的实现类似于 unordered_map templateclass K, class Hash HashFuncK class unordered_set {struct SetKeyOfT{const K operator()(const K key){return key;}};public:typedef typename hash_bucket::HashTableK, const K, SetKeyOfT, Hash::iterator iterator;iterator begin(){return _ht.begin();}iterator end(){return _ht.end();}bool insert(const K key){return _ht.Insert(key);}private:hash_bucket::HashTableK, const K, SetKeyOfT, Hash _ht; };END
http://www.zqtcl.cn/news/802505/

相关文章:

  • 本地环境建设网站南通网站制作怎样
  • 注册公司多少钱不用交税南昌seo网站推广费用
  • 网站建设与运营的论文的范本wordpress弹框登陆
  • 阿里云做的网站空间动画制作器
  • 徐州企业网站建设做视频网站需要多少上传
  • 记事本做网站怎么加背景图网站开发需要哪些人怎么分工
  • 南宁网站建设找哪家网站被k换域名
  • spring mvc 网站开发网站开发与管理所对应的职位及岗位
  • 国内做视频的网站有哪些宁波网站制作与推广
  • 织梦软件展示网站源码建设工程竣工验收消防备案网站
  • 网站里面的链接怎么做漳州建设网站
  • 有什么网站建设类岗位企业门户网站设计论文
  • 外贸公司如何做公司网站集团网站建设建站模板
  • 嘉兴云推广网站贵州毕节网站建设
  • 班级网站模板青岛哪里有做网站公司的
  • 建设工程设计招标信息网站.制作一个聊天软件需要多少钱
  • 校园网站建设的意见新闻聚合网站开发 技术
  • 网站推广公司兴田德润电话多少wordpress 弹框
  • 大连网站建设谁家好软件开发需要什么技术
  • 广州网站建设哪家便宜成都电商app开发
  • 网站qq访客统计青岛网站设计定制
  • 山东嘉祥做网站的有哪几家销售外包
  • 怎么做网站_旅游网站定位
  • 湛江seo推广公司aso优化渠道
  • 网站设计培训机构内蒙古网上办事大厅官网
  • 什么是网站空间信息网站备案号中信息有变
  • 网站建设的基础怎么提升网站流量
  • 网站开发线框网页设计网站建设过程报告
  • 怎么用html做移动网站吗免费装修设计软件
  • 门头沟石家庄网站建设鞍山怎么样做一个自己的网站