В shrink_to_fit
вам нужно изменить размер динамически выделенной памяти, а в push_back
вам иногда нужно увеличить выделенную память.
Итак, один важный фрагмент кода, который вам понадобится, - это функция изменения размера, которая будет выполнять следующее:
- определяет необходимую новую емкость. В
shrink_to_fit
новая емкость, очевидно, size
. Если вам необходимо изменить размер в push_back
, возможно, вы захотите увеличить емкость не только на 1, чтобы уменьшить количество раз, которое вам нужно изменить. - выделите память требуемой емкости, используя
new
. Например, auto temp = new int[newCapacity];
- Скопируйте все существующие элементы из
m_list
в temp
, используя цикл, или memcpy
. - удалите старую память, используя
delete[] m_list;
- настроить локальные переменные:
capacity = newCapacity
и m_list = temp
.
Это самая сложная часть работы с динамической памятью, и я надеюсь, что это поможет вам начать работу.