Во-первых, требования к сбору:
- "
std:equal_to
- это единственное, что я могу использовать из стандартной библиотеки" - Есть член
max_size
и size
, getCount()
возвращает текущий размер и getSize()
максимальный размер (примечание: это ужасно ...)
Так что я бы предположил, что конструктор вашему классу следует выделить достаточно памяти для хранения size
(параметр) объектов класса Element
.
Правильный способ сделать это будет, как это предлагается в Rustyx 'ответ - использовать std::aligned_storage
. Так как это для домашней работы в университете, и ваш лектор / профессор / человек, который написал это задание, вероятно, не знает достаточно о C ++, чтобы заботиться / понимать проблемы, которые вам, вероятно, лучше всего подходят с чем-то вроде этого:
// in constructor, I repeat, THIS IS HORRIBLE!
max_size = size; // better use member initialization, though
data = reinterpret_cast<Element*>(new unsigned char[sizeof(Element) * max_size]);
При вставке вы используете размещение нового для создания нового элемента в качестве копии:
new (data[index_for_new_element]) Element(element);
Для удаления вам нужно вызвать деструктор вручную!
data[index_to_erase].~Element();
Я повторяю: Это не то, как вы написали бы такой код в реальном приложении! Это не научит вас чему-то ценному!