Ответ в теме: Реализовать класс одномерного массива

      Комментарии к записи Ответ в теме: Реализовать класс одномерного массива отключены

Главная Форумы Программирование Программирование на С++ Реализовать класс одномерного массива Ответ в теме: Реализовать класс одномерного массива

#2859

Весь нужный вам функционал есть в стандартном классе vector, приведенный ниже код можно использовать лишь в учебных целях (чтобы потренироваться), во всех остальных случаях используйте надежные классы стандартной библиотеки.
Объявим класс Array:

template<class ElementType>
class Array { 
public:
  Array(); 
  ~Array(); 
 
  ElementType& operator [] (unsigned int index); 
  void push_back(const ElementType &item);
  ElementType* get();
  unsigned int size();
 
  struct bad_allocation {};
  struct bad_index {};
private:
  ElementType *m_array;
  unsigned int m_size;
  unsigned int m_realSize;
 
  const static int Step = 128;
};

Тут функция получения элемента массива (оператор []) возвращает ссылку на элемент чтобы пользователь мог изменить принятое значение (изменить элемент массива). Функция добавления элемента также принимает константную ссылку на значение. Более подробно про передачу по ссылке.

Класс помимо указателя на массив содержит его реальный размер (количество выделенной по указателю памяти) и количество записанных в массив элементов (меньше или равное реального размера). Константа Step хранит количество элементов, на которое увеличивается реальный размер всякий раз, когда очередной элемент не входит в существующий массив.

Кроме того, описываются исключения, которые могут вырабатывать функции класса. На самом деле, более правильно – наследовать классы исключений от std::exception.