Я пытаюсь реализовать операцию сжатия для кругового буфера. Буфер имеет начальный указатель (m_start) и хранит количество элементов (m_numelements). Когда буфер заполнен, я просто очищаю старое значение.
Скажем, у нас есть массив размером 16. m_start = 9 m_numelements = 11.
Я хочу уменьшить этот массив до массива размером 8 (можно отбрасывать элементы).
Ограничение здесь состоит в том, что m_start( 9 ) старого массива должно сопоставляться с новой емкостью m_start % ( 9 % 8 = 1 ) нового массива.
Я попытался написать код, но в итоге получил много лестницы «если-иначе». Любая эффективная реализация для этого?