Я бы использовал циклически связанный список (или просто буфер, который вы используете циклически) с 30 узлами (или элементами). Вы начинаете с верхних и нижних указателей на одном и том же узле, и продвигаете верхний всякий раз, когда добавляете элемент, и восстанавливаете его при удалении. если вы добавляете так много элементов, что достигаете дна (вы прошли весь цикл), то вы перемещаете верхний и нижний указатель так, чтобы они не пересекались, и перезаписывали тот, который был под дном указатель (на который сейчас указывает верхний указатель).
Другой способ сделать это - выделить массив (или обернуть вокруг vector
) вместо динамического выделения памяти и модулировать ваши индексы на 30, когда вы хотите продвинуть индекс.
В любом случае, вам никогда не придется выделять или освобождать память, кроме как в начале, и вы можете справиться с переполнением действительно хорошо. Вы можете прочитать подробности на странице Википедии о кольцевых буферах .