Advertisement
Gistrec

MyArray

Jan 19th, 2018
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.12 KB | None | 0 0
  1. #include <cstddef>
  2.  
  3. template <typename T>
  4. class Array {
  5. public:
  6.     //   конструктор класса, который создает
  7.     //   Array размера size, заполненный значениями
  8.     //   value типа T. Считайте что у типа T есть
  9.     //   конструктор, который можно вызвать без
  10.     //   без параметров, либо он ему не нужен.
  11.     //
  12.     explicit Array(size_t size = 0, const T& value = T()) {
  13.         this->table = new T[size];
  14.         this->count = size;
  15.         for (size_t i = 0; i < size; ++i) {
  16.             table[i] = value;
  17.         }
  18.     }
  19.  
  20.     // Конструктор копирования, который создает
  21.     // опию параметра. Считайте, что для типа
  22.     // T определен оператор присваивания.
  23.     //
  24.     Array(const Array &array) {
  25.         this->table = new T[array.size()];
  26.         this->count = array.size();
  27.         for (size_t i = 0; i < count; ++i) {
  28.             table[i] = array[i];
  29.         }
  30.     }
  31.  
  32.     // Деструктор, если он вам необходим.
  33.     //
  34.     ~Array() {
  35.         delete [] table;
  36.     }
  37.  
  38.     // Оператор присваивания.
  39.     //
  40.     Array& operator=(const Array &array) {
  41.         if (this != &array) {
  42.             delete [] table;
  43.             this->table = new T[array.size()];
  44.             this->count = array.size();
  45.             for (size_t i = 0; i < count; ++i) {
  46.                 table[i] = array[i];
  47.             }
  48.         }
  49.         return *this;
  50.     }
  51.  
  52.     // Возвращает размер массива (количество элементов).
  53.     //
  54.     size_t size() const {
  55.         return count;
  56.     }
  57.  
  58.     // const T& operator[](size_t) const
  59.     //   две версии оператора доступа по индексу.
  60.     T& operator[](size_t index) {
  61.         return table[index];
  62.     }
  63.     T operator[](size_t index) const {
  64.         return table[index];
  65.     }
  66.  
  67. private:
  68.     T* table;
  69.     size_t count;
  70. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement