Я новичок в программировании, изучаю структуры данных, написал свою реализацию linked list чтобы понять, как оно работает, "потрогать ручками".
Заметил, что при 10кк элементов программа потребляет 611 МБ памяти. Думал, что где то имею утечки памяти, подключил STL forward_list, добавил столько же элементов, тоже 611 МБ. Но добавлялись эти элементы 20 сек, в то время как в моей реализации 2 сек. Почему так?
Также я посчитал, что один элемент класса Node занимает 8 байт для типа данных int в x86 конфигурации, значит 10кк элементов займут ~76 МБ памяти, у меня же 611 МБ, в чём дело?
// Класс
template <typename T>
class D1List
{
public:
D1List();
~D1List();
int getSize();
void push_back(T newData);
void push_front(T newData);
T getSum();
T getAvg();
T getMin();
T getMax();
T operator[](int idx);
private:
template <typename T>
class Node
{
public:
T data;
Node* nextNode;
Node(T newData = T(), Node* newNextNode = nullptr)
{
this->data = newData;
this->nextNode = newNextNode;
};
};
Node<T>* head;
int size;
};
// Реализация добавления Node в начало списка
template<typename T>
void D1List<T>::push_front(T newData)
{
if (head == nullptr) {
head = new Node<T>(newData);
}
else {
head = new Node<T>(newData, head);
}
this->size++;
}