SlepoiKrot

Untitled

Oct 19th, 2020
1,419
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <cstddef>
  2.  
  3. class Vector {
  4. private:
  5.     int* data;
  6.     size_t data_size;
  7.     size_t capacity;
  8.  
  9. public:
  10.     Vector() : capacity(0), data_size(0), data(nullptr) {}
  11.  
  12.     Vector(const Vector& v) : capacity(v.capacity), data_size(v.data_size) {
  13.         data = new int[data_size];
  14.         for (size_t i = 0; i < data_size; ++i) {
  15.             data[i] = v.data[i];
  16.         }
  17.     }
  18.  
  19.     Vector& operator=(const Vector& v) {
  20.         delete[] data;
  21.         data_size = v.data_size;
  22.         capacity = v.capacity;
  23.         data = new int[data_size];
  24.         for (size_t i = 0; i < data_size; ++i) {
  25.             data[i] = v.data[i];
  26.         }
  27.         return *this;
  28.     }
  29.  
  30.     ~Vector() {
  31.         delete[] data;
  32.     }
  33.  
  34.  
  35.     void push_back(const int& elem) {
  36.         if (data_size == capacity) {
  37.             capacity *= 2;
  38.             int* new_data = new int[capacity];
  39.             for (size_t i = 0; i < data_size; ++i) {
  40.                 new_data[i] = data[i];
  41.             }
  42.             delete[] data;
  43.             data = new_data;
  44.         }
  45.         data[data_size++] = elem;
  46.     }
  47.  
  48.     void pop_back() {
  49.         if (data_size > 0) {
  50.             --data_size;
  51.         }
  52.     }
  53.  
  54.     size_t size() {
  55.         return data_size;
  56.     }
  57.  
  58.     int& operator[](const int& index) {
  59.         return data[index];
  60.     }
  61. };
  62.  
RAW Paste Data