Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <iostream>
- struct Item
- {
- Item *next;
- long long value;
- };
- class Arena {
- public:
- Arena(const Arena&) = delete;
- Arena &operator=(Arena other) = delete;
- Item *arr = nullptr;
- bool *arr_vacant = nullptr;
- size_t newsize = 0;
- explicit Arena(size_t size) {
- newsize = size / sizeof(Item);
- if (newsize) {
- Item *arr = new Item[newsize];
- bool *arr_vacant = new bool[newsize];
- for (size_t i = 0; i < newsize; ++i) {
- arr_vacant[i] = false;
- }
- }
- }
- ~Arena() {
- delete[] arr;
- delete[] arr_vacant;
- }
- Item *get() {
- for (size_t i = 0; i < newsize; ++i) {
- if (arr_vacant[i] == false) {
- arr_vacant[i] = true;
- return arr + i;
- }
- }
- return nullptr;
- }
- void put(Item *it) {
- for (size_t i = 0; i < newsize; ++i) {
- if (arr + i == it) {
- arr_vacant[i] = false;
- }
- }
- }
- };
- // int main()
- // {
- // Arena t(200);
- // }
Advertisement
RAW Paste Data
Copied
Advertisement