1

我有一个具有当前值的变量,但是当我更改该值时,它首先需要将过去的值存储在某个数据结构中,该数据结构将向我显示过去 X 多个值。

这是对过去的值进行各种计算,例如最近值的平均值等。

我唯一的想法是为此使用队列,因为我只需要过去的 X 值,所以我实现了一个 FixedSizedQueue ,它会自动将旧值出列。

从那时起,我发现至少在队列的默认实现中,我无法真正访问其中的随机值。但另外,如果有人能够完成这项工作,他们会很慢并且需要遍历所有值。

所以我想知道有没有办法有效地做到这一点?我能想到的唯一另一种方法是拥有一个数组并简单地实现一些推送功能,将所有元素移动一个索引位置。但这似乎过于浪费。如果只有这两个选项,如果每次更改数据结构中的每个值都需要访问 20 次,并且大小将存储 50 个值,那么哪一个会更好?

这是一个性能非常重要的地方,因为每个被“记录”的变量在迭代我拥有的数据时都会改变至少一百万次,所以不用担心我会过早优化。谢谢你,我很感激!

4

1 回答 1

3

您正在寻找一个环形缓冲区/循环缓冲区

你可以在这里找到 ac# 的实现。

于 2013-02-24T09:24:47.750 回答