数组的循环缓冲区?

时间:2012-08-18 14:08:55

标签: c++ boost circular-buffer

我有一个二维双,我需要保持在循环缓冲区。我宁愿将它们放在一个缓冲区中,而不是必须跟上两个单维缓冲区。是否可以轻松地做到这一点,或者最好继续使用两个缓冲区?

1 个答案:

答案 0 :(得分:0)

如果每个元素的大小相同,即D1 x D2,你可以只分配一个数组

double data[D1*D2*numElem]

并使用行/列主索引(i * D2 + j或i * D1 + j)来访问每个元素中的值。当然,无论何时调整大小或插入/删除元素,都必须分配新的缓冲区并复制值。如果每个元素的大小是可变的,或者您认为插入/删除/调整大小是常见的,请使用两个缓冲区。如果容器是稳定的并且迭代元素通用,则单个缓冲区可能更好。