【发布时间】:2013-07-05 11:02:37
【问题描述】:
我正在尝试实现循环缓冲区的收缩操作。 缓冲区有一个起始指针 (m_start) 并存储元素的数量 (m_numelements)。当缓冲区已满时,我只是清除旧值。
假设我们有一个大小为 16 的数组。 m_start = 9 m_numelements = 11。
我想把这个数组收缩成一个大小为 8 的数组(可以丢弃元素)。
这里的约束是旧数组的 m_start( 9 ) 应该映射到新数组的 m_start % 新容量 ( 9 % 8 = 1 )。
我尝试编写代码,但最终得到了很多 if-else 阶梯。有什么有效的实现吗?
【问题讨论】:
-
我也有类似的问题。是否允许我编辑问题以使用更具体的实现(在 C 中),可能会强制更新一些答案建议(目前尚未接受),还是我应该问一个新问题?
标签: algorithm data-structures circular-buffer circular-list