54 lines
1.1 KiB
C++
54 lines
1.1 KiB
C++
#ifndef ARRAY_HPP
|
|
#define ARRAY_HPP
|
|
|
|
#include <iostream>
|
|
|
|
template <typename T>
|
|
class Array
|
|
{
|
|
private:
|
|
T *_data; // pointeur vers les données
|
|
size_t _size; // nombre d'éléments
|
|
|
|
public:
|
|
Array() : _data(NULL), _size(0) {}
|
|
Array(unsigned int n)
|
|
{
|
|
_data = new T[n]();
|
|
_size = n;
|
|
}
|
|
Array(const Array &other) : _size(other._size)
|
|
{
|
|
_data = new T[_size]();
|
|
for (size_t i = 0; i < _size; i++)
|
|
_data[i] = other._data[i];
|
|
}
|
|
~Array()
|
|
{
|
|
delete[] _data;
|
|
}
|
|
Array &operator=(const Array &other)
|
|
{
|
|
if (this == &other)
|
|
return *this;
|
|
delete[] this->_data;
|
|
_size = other._size;
|
|
_data = new T[_size]();
|
|
for (size_t i = 0; i < _size; i++)
|
|
_data[i] = other._data[i];
|
|
return *this;
|
|
}
|
|
T &operator[](size_t index)
|
|
{
|
|
if (this->_size <= index)
|
|
throw std::out_of_range("Out of array size");
|
|
else
|
|
return this->_data[index];
|
|
}
|
|
size_t size() const
|
|
{
|
|
return this->_size;
|
|
}
|
|
};
|
|
|
|
#endif |