0

我的问题很简单,我使用的是眼动追踪设备,它大约每 30 毫秒发送一次凝视位置。因此,每 30 毫秒smoothedCoordinates更新一个变量。我想使用 的最后一个 X(例如 10 个)值来确定smoothedCoordinates用户正在查看的屏幕上的一个区域。

为此,我必须将这些值存储smoothedCoordinates在一个容器中并对其进行处理以确定区域(通过获取这些 X 值的 xmin、xmax、ymin、ymax)

.

我考虑过使用 FIFO,每次更新变量时,我都会将值推送到 fifo 的前面并弹出后面的值,在这种情况下,我的 FIFO 将始终是相同的大小。

但是是否可以直接加入 FIFO 的所有元素而不弹出它们?我搜索了互联网,看起来只能加入第一个元素和最后一个元素?

.

如果无法使用 FIFO 进行操作,是否有其他容器可以满足我的需求?

4

1 回答 1

1

您可以只使用标准数组并为其提供类似 FIFO 的功能,如下所示

char array[20];

// prepend the array and cut off the last value
for (int i = 19 ; i >= 0 ; i--)
{
    // ignore the last element, so it gets overwritten
    if (i != 19) array[i+1] = array[i];
}
// add the new value to the array at the now available 1st index
array[0] = firstElement[0];
于 2015-05-12T15:09:56.127 回答