【发布时间】:2016-09-23 08:59:10
【问题描述】:
所以,我的目标是在缓冲区中捕获数据。 我需要速度,我只需要一个固定的大小,所以我认为圆形数组是最好的。
但我想做的是在每一步:
- 首先,用刚刚到达的最新信息覆盖数组中的最新信息
- 接下来,使用从最旧到最新的 all 数组
- 重复
我很难理解如何在高效的同时处理 C++ 中的第二步。或者也许除了圆形数组之外的其他东西会更好?欢迎任何建议或观点。
要有更多的图形:
for step in steps:
(current writing position = 2)
current buffer = [8, 9, 3, 4, 5, 6, 7]
new info = 10
overwrite buffer(new info)
new buffer = [8, 9, 10, 4, 5, 6, 7]
current writing position += 1 //(3)
array to use = [4, 5, 6, 7, 8, 9, 10]
function(array to use)
(我用整数一个个来看看缓冲区中每条信息的年表)
我正在考虑的是复制最后一部分和第一部分,然后将它们连接起来:
std::vector<int> buffer{8, 9, 10, 4, 5, 6, 7};
std::vector<int> oldest(&buffer[3],&buffer[6]);
std::vector<int> youngest(&buffer[0],&buffer[2]);
oldest.insert( oldest.end(), youngest.begin(), youngest.end() );
function(oldest)
如果你知道什么会更快,请告诉我。
【问题讨论】:
-
如果有人认为要理解我的问题,最好用 c++ 更改伪代码,让我知道。我会改变它。我当前的代码比这更复杂。