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

网站开发 文献综述购物网站开发步骤视频演示

网站开发 文献综述,购物网站开发步骤视频演示,wordpress 好用插件,东莞网站建设行业翘楚文章目录 一、定义二、LRU模拟实现二、代码实现 一、定义 LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。 Cache的容量有限,因此当Cache的容量用完后,而又有新的内容需要添加进来时, 就…

文章目录

  • 一、定义
  • 二、LRU模拟实现
  • 二、代码实现


一、定义

LRU是Least Recently Used的缩写,意思是最近最少使用,它是一种Cache替换算法。
Cache的容量有限,因此当Cache的容量用完后,而又有新的内容需要添加进来时, 就需要挑选并舍弃原有的部分内容,从而腾出空间来放新内容。LRU Cache 的替换原则就是将最近最少使用的内容替换掉。

二、LRU模拟实现

146.LRU缓存
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

下面我们就借力扣的这道题来简单实现一个

题目中要求我们以O(1)的时间复杂度来完成,查找的话我们首先肯定会想到哈希表,但又涉及一个问题,我们查找完之后还需要更新一下刚刚查找数据的位置,将这个数据置为是新的数据,我们如何解决查找完改变数据的标识也做到O(1)呢?

要保持高效实现O(1)的put和get,那么使用双向链表和
哈希表的搭配是最高效和经典的
。使用双向链表是因为双向链表可以实现任意位置O(1)的插入和删除,使用哈希表是因为哈希表的增删查改也是O(1)。
在这里插入图片描述

需要注意:这里最巧的设计就是将unordered_map的value type放成list<pair<int, int>>::iterator,因为这样,当get一个已有的值以后,就可以直接找到key在list中对应的iterator,然后将这个值移动到链表的头部,保持LRU。

二、代码实现

#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<list>
#include<unordered_map>using namespace std;class LRUCache {public:LRUCache(int capacity):_capacity(capacity){}int get(int key) {auto ret = _hashMap.find(key);//在hash中找到了key存的地方if (ret != _hashMap.end()) {LtIter it = ret->second;//将it移动到_LRUList的头部_LRUList.splice(_LRUList.begin(), _LRUList, it);return it->second;}else {return -1;}}void put(int key, int value) {auto ret = _hashMap.find(key);//原来没有key的数据则添加if (ret == _hashMap.end()) {//LRU满了,删除最近最少使用的就是链表尾部if (_capacity == _hashMap.size()) {pair<int, int>back = _LRUList.back();_hashMap.erase(back.first);//删哈希里面//链表里面k存的和哈希的是同一个key_LRUList.pop_back();//删链表尾部}//放入新的数据到链表头部_LRUList.push_front(make_pair(key, value));//哈希表中添加_hashMap[key] = _LRUList.begin();}//原来有key的数据则更新else {LtIter it = ret->second;it->second = value;//将这个位置移到链表头部_LRUList.splice(_LRUList.begin(), _LRUList, it);}}private://链表存kv结构//k为key值,v为我们要更新的数据typedef list<pair<int, int>>::iterator LtIter;//重命名链表迭代器int _capacity; // 容量大小,超过容量则换出,保持LRU//_LRUList假设链表头部为最近使用的,尾部为最近最少使用list<pair<int, int>> _LRUList;//hash中存放的是key值与对应链表迭代器的的映射关系unordered_map<int, LtIter>_hashMap;};
http://www.yayakq.cn/news/87722/

相关文章:

  • 桌面软件开发跟网站开发那个可以写代码的网站有哪些问题吗
  • 代做视频的网站重新wordpress默认
  • 网页网站设计培训班wordpress怎么去掉
  • 做一个企业的网站怎么做网站创建域名
  • 福鼎市建设局网站wordpress登陆好慢
  • 黄石市网站建设长沙seo搜索
  • 内蒙古网站制作wordpress实名认证发帖
  • 网站营销特点app平台制作开发
  • 企业网站建设合同百度文库潜江公司做网站
  • 公司网站开发实训报告免费发布推广信息软件
  • 网站建设时间安排全球邮登录入口
  • 南昌市建设局官方网站app开发软件财务预测
  • 佛山 做网站四大门户网站的区别
  • 网站建设信息模板建湖网站设计
  • 公司网站里面页面链接怎么做做參考資料的网站
  • 潮品服饰网站建设规划书wordpress最近文章
  • 可以做英文教师的网站推广普通话喜迎二十大的手抄报简单
  • 做中学学中做网站百度推广怎么看关键词排名
  • 免费制作一个自己的网站吗ppt效果网站
  • 西安建设网站排名休闲采摘园网站建设
  • 一个空间可以做两个网站吗万网衡水网站备案
  • 做电影网站选择什么配置的服务器自己建设网站需要具备哪些条件
  • 网站开发那个好wordpress 下载模板
  • 网站seo排名免费咨询免费公司网站申请
  • python制作视频网站开发小程序定制公司哪里有
  • 怎样做才能让网站有排名全网最低价业务网站
  • 百度关键词统计中山seo代理商
  • 花垣做网站高端营销网站定制
  • 垂直 网站开发程序绿色农产品网站 模板
  • 深圳建设网站wordpress主题推荐