Advertisement
wowonline

Untitled

Apr 7th, 2022
649
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <cstdio>
  2. #include <iostream>
  3.  
  4.  
  5. struct Item
  6. {
  7.     Item *next;
  8.     long long value;
  9. };
  10.  
  11. class Arena {
  12. public:
  13.     Arena(const Arena&) = delete;
  14.     Arena &operator=(Arena other) = delete;
  15.  
  16.     Item *arr = nullptr;
  17.     bool *arr_vacant = nullptr;
  18.     size_t newsize = 0;
  19.  
  20.     explicit Arena(size_t size) {
  21.         newsize = size / sizeof(Item);
  22.         if (newsize) {
  23.             Item *arr = new Item[newsize];
  24.             bool *arr_vacant = new bool[newsize];
  25.  
  26.             for (size_t i = 0; i < newsize; ++i) {
  27.                 arr_vacant[i] = false;
  28.             }
  29.         }
  30.     }
  31.  
  32.     ~Arena() {
  33.         delete[] arr;
  34.         delete[] arr_vacant;
  35.     }
  36.  
  37.     Item *get() {
  38.         for (size_t i = 0; i < newsize; ++i) {
  39.             if (arr_vacant[i] == false) {
  40.                 arr_vacant[i] = true;
  41.                 return arr + i;
  42.             }
  43.         }
  44.         return nullptr;
  45.     }
  46.  
  47.  
  48.     void put(Item *it) {
  49.         for (size_t i = 0; i < newsize; ++i) {
  50.             if (arr + i == it) {
  51.                 arr_vacant[i] = false;
  52.             }
  53.         }
  54.     }
  55.  
  56.  
  57. };
  58.  
  59.  
  60. // int main()
  61. // {
  62. //     Arena t(200);
  63. // }
Advertisement
RAW Paste Data Copied
Advertisement