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

网站开发 jsp加密太原百度快速排名

网站开发 jsp加密,太原百度快速排名,小程序商城多少钱,北京王府井半岛酒店W...Y的主页 #x1f60a; 代码仓库分享#x1f495; 前言#xff1a;我们已经认识并实现了哈希底层的逻辑#xff0c;创建出了其开散列。现在我们要进行封装#xff0c;类比STL中的unordered_set 与 unordered_map。 目录 1. 模拟实现 1.1 哈希表的改造 1.2 unorde… W...Y的主页 代码仓库分享  前言我们已经认识并实现了哈希底层的逻辑创建出了其开散列。现在我们要进行封装类比STL中的unordered_set 与 unordered_map。 目录 1. 模拟实现 1.1 哈希表的改造 1.2 unordered_set 与 unordered_map的封装 1. 模拟实现 1.1 哈希表的改造 1. 模板参数列表的改造 unordered_set 与 unordered_map的泛型与map与set的泛型有些类似unordered_set 与 unordered_map比map与set多一个仿函数他们都取key值并且需要一个hash值作为映射点。所以需要两个仿函数。 K:关键码类型 V: 不同容器V的类型不同如果是unordered_mapV代表一个键值对如果是 unordered_set,V 为 K KeyOfValue: 因为V的类型不同通过value取key的方式就不同我们必须使用一个仿函数进行才能实现unordered_map/set。 Hash: 哈希函数仿函数对象类型哈希函数使用除留余数法需要将Key转换为整形数字才能 取模 templateclass K, class V, class KeyOfValue, class Hash DefHashFT class HashBucket; 只有我们调用unordered_set 与 unordered_map时编译器会识别关键字进行操作所以我们定义的仿函数可以使用类部类中 //unodered_set 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; };//unorder_map templateclass K, class V, class Hash HashFuncK class unordered_map {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; }; 所以我们HashNode中的泛型应该修改 templateclass T struct HashNode {HashNodeT* _next;T _data;HashNode(const T data):_next(nullptr), _data(data){} }; 2. 增加迭代器操作 我们要实现迭代器的、*、!等等因为HashNode中为单链表所以我们不需要实现--操作。 那我们应该如何实现呢 上图是散列表结构迭代器的底层就是指针所以我们就要使用指针指向桶中的元素。所以我们就要HashNode的指针与HashTable的指针作为迭代器成员。 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){} }; begin()与end()函数非常简单begin就找vector中第一个不为空的指针返回其值即可。 iterator begin() {for (size_t i 0; i _tables.size(); i){// 找到第一个桶的第一个节点if (_tables[i]){return iterator(_tables[i], this);}}return end(); } end就是返回空即可 iterator end() {return iterator(nullptr, this); } 其实是最难实现的因为当给予一个指针时我们要桶的下一个节点如果这个桶的所以节点全部走完就要寻找下一个不为空的桶即可。 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 operator*() {return _node-_data; } 1.2 unordered_set 与 unordered_map的封装 //unordered_set namespace why {templateclass K, class Hash HashFuncKclass 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;}; //unordered_map namespace why {templateclass K, class V, class Hash HashFuncKclass unordered_map{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;}; 以上就是unordered_set 与 unordered_map的封装的全部内容具体代码在我的gitee代码库中想要的可以自行去取
http://www.pierceye.com/news/581403/

相关文章:

  • 做影视网站 片源从哪里来做自媒体的上那些网站
  • 邢台网站开发百度云 做网站
  • 淘宝优惠劵网站建设wordpress主题 简洁
  • 自己做电影资源网站揭阳新闻最新消息
  • 北碚免费建站哪家做得好佛山网站建设设计
  • 怎么做网站拍卖的那种wordpress主题搜索图标
  • 三亚网站建设平台查数据的权威网站
  • html网站制作答辩ppt网站备份和备案的区别
  • 网站开发需要工具免费的ps软件
  • 常州网站建设优质商家重庆互联网怎么样
  • 做网站发广告动漫网页设计报告
  • 求职招聘网站建设投标书沈阳网站建设的公司哪家好
  • 做导航网站有发展吗南京企业网站制作哪家好
  • 千万pv网站开发成本招聘网站数建设
  • 吐鲁番大型网站建设平台找客户去哪个平台
  • 权威网站有哪些给个网站可以在线
  • 优化网站专题北京海淀网站建设公司
  • 广州网站快速排名网站维护正常要多久
  • 建网站 选安全甘肃做网站价格
  • 微信公众管理平台有必要买优化大师会员吗
  • 家居网站建设素材腾讯adq广告平台
  • 响应式网站 图片居中门户网站样式
  • 潍坊网站排名推广北京建设高端网站的
  • 广东省住房和建设网站鹤壁市建设局网站
  • 北京网站建设报价明细手机网站网站开发流程
  • 三合一网站模板如何看网站是html几代做的
  • 如何设置自己的网站网站建设的常用词
  • 甘肃网站开发冷色调网站
  • 用cdr做网站设计尺寸要多少网站如何做实名验证码
  • 比较好的设计网站wordpress主题代码哪里