当前位置:   article > 正文

深信服题目_深信服pt2题库

深信服pt2题库

typedef struct Elem{
 int key;
 int value;
}Elem;

  1. #include <iostream>
  2. #include <list>
  3. #include <map>
  4. using namespace std;
  5. typedef struct Elem{
  6. int key;
  7. int value;
  8. }Elem;
  9. typedef list<Elem> myList;
  10. typedef map<int, myList::iterator> myMap;
  11. class LRU{
  12. public:
  13. LRU(int s) :_size(s){}
  14. int get(int key){
  15. auto it = myMap1.find(key);
  16. if (it == myMap1.end())return -1;
  17. else{
  18. auto list_it = myMap1[key];
  19. int value = list_it->value;
  20. Elem elem;
  21. elem.key = key;
  22. elem.value = value;
  23. myList1.erase(list_it);
  24. myList1.push_front(elem);
  25. myMap1[key] = myList1.begin();
  26. return myList1.begin()->value;
  27. }
  28. }
  29. void put(int key, int value){
  30. auto it = myMap1.find(key);
  31. if (it == myMap1.end()){ //直接插入
  32. if (myList1.size() == _size){ //容量达到限制
  33. int key = myList1.back().key;
  34. myMap1.erase(key);
  35. myList1.pop_back();
  36. }
  37. Elem elem;
  38. elem.key = key;
  39. elem.value = value;
  40. myList1.push_front(elem);
  41. myMap1[key] = myList1.begin();
  42. }
  43. else{
  44. auto list_it = myMap1[key];
  45. Elem ee;
  46. ee.key = key;
  47. ee.value = value;
  48. *list_it = ee;
  49. }
  50. }
  51. private:
  52. int _size;
  53. myList myList1;
  54. myMap myMap1;
  55. };
  56. int main() {
  57. int n;
  58. cin >> n;
  59. LRU lru(n);
  60. char ch;
  61. int _1, _2;
  62. while (cin >> ch) {
  63. if (ch == 'p') {
  64. if (n <= 0)continue;
  65. cin >> _1 >> _2;
  66. lru.put(_1, _2);
  67. }
  68. else if (ch == 'g') {
  69. cin >> _1;
  70. cout << lru.get(_1) << endl;
  71. }
  72. }
  73. return 0;
  74. }

typedef list<Elem> myList;
typedef map<int, myList::iterator> myMap;


class LRU{
public:
 LRU(int s) :_size(s){}
 int get(int key){
  auto it = myMap1.find(key);
  if (it == myMap1.end())return -1;
  else{
   auto list_it = myMap1[key];
   int value = list_it->value;
   Elem elem;
   elem.key = key;
   elem.value = value;
   myList1.erase(list_it);
   myList1.push_front(elem);
   myMap1[key] = myList1.begin();
   return myList1.begin()->value;
  }
 }
 void put(int key, int value){
  auto it = myMap1.find(key);
  if (it == myMap1.end()){ //直接插入
   if (myList1.size() == _size){ //容量达到限制
    int key = myList1.back().key;
    myMap1.erase(key);
    myList1.pop_back();
   }
   Elem elem;
   elem.key = key;
   elem.value = value;
   myList1.push_front(elem);
   myMap1[key] = myList1.begin();
  }
  else{
   auto list_it = myMap1[key];
   Elem ee;
   ee.key = key;
   ee.value = value;
   *list_it = ee;
  }
 }

private:
 int _size;
 myList myList1;
 myMap myMap1;
};

int main() {
 int n;
 cin >> n;
 LRU lru(n);
 char ch;
 int _1, _2;
 while (cin >> ch) {
  if (ch == 'p') {
   if (n <= 0)continue;
   cin >> _1 >> _2;
   lru.put(_1, _2);
  }
  else if (ch == 'g') {
   cin >> _1;
   cout << lru.get(_1) << endl;
  }
 }
 return 0;
}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/704858
推荐阅读
相关标签
  

闽ICP备14008679号