Gistrec icon

MyArray

Gistrec | PRO | 01/19/18 03:41:30 PM UTC | 0 ⭐ | 668 👁️ | Never ⏰ | []
C++ |

2.12 KB

|

None

|

0 👍

/

0 👎

#include <cstddef>
 
template <typename T>
class Array {
public:
    //   конструктор класса, который создает
    //   Array размера size, заполненный значениями
    //   value типа T. Считайте что у типа T есть
    //   конструктор, который можно вызвать без
    //   без параметров, либо он ему не нужен.
    //
    explicit Array(size_t size = 0, const T& value = T()) {
        this->table = new T[size];
        this->count = size;
        for (size_t i = 0; i < size; ++i) {
            table[i] = value;
        }
    }
 
    // Конструктор копирования, который создает
    // опию параметра. Считайте, что для типа
    // T определен оператор присваивания.
    //
    Array(const Array &array) {
        this->table = new T[array.size()];
        this->count = array.size();
        for (size_t i = 0; i < count; ++i) {
            table[i] = array[i];
        }
    }
 
    // Деструктор, если он вам необходим.
    //
    ~Array() {
        delete [] table;
    }
 
    // Оператор присваивания.
    //
    Array& operator=(const Array &array) {
        if (this != &array) {
            delete [] table;
            this->table = new T[array.size()];
            this->count = array.size();
            for (size_t i = 0; i < count; ++i) {
                table[i] = array[i];
            }
        }
        return *this;
    }
 
    // Возвращает размер массива (количество элементов).
    //
    size_t size() const {
        return count;
    }
 
    // const T& operator[](size_t) const
    //   две версии оператора доступа по индексу.
    T& operator[](size_t index) {
        return table[index];
    }
    T operator[](size_t index) const {
        return table[index];
    }
 
private:
    T* table;
    size_t count;
};

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎