gpt4 book ai didi

c# - 如何创建一个 "buffer"来存储每个帧的变量的先前值

转载 作者:行者123 更新时间:2023-12-02 14:11:09 26 4
gpt4 key购买 nike

我需要知道 10 帧前变量的值。我想过制作一个数组,但每帧偏移值似乎有点过大。

有什么想法/想法吗?

最佳答案

您可以基于 System.Collections.Generic.Queue<T> 创建数据结构存储每一帧的变量。

相对于 Array 的优势的一点是,您不需要移动每一帧上的每个变量,只需添加最新的变量即可。这使其成为 O(1)操作,而不是O(n) .

class History<T>
{
Queue<T> data;
public int MaxCapacity { get; private set; }

public History(int maxCapacity)
{
MaxCapacity = maxCapacity;
data = new Queue<T>(maxCapacity);
}

public void AddEntry(T newData)
{
if (data.Count >= MaxCapacity)
{
data.Dequeue();
}
data.Enqueue(newData);
}

public T Peek()
{
return data.Peek();
}
}

用法

var h = new History<float>(10);

//on each frame
h.AddEntry(0.12345f);

//get the value 10 frames ago (or the earliest one recorded)
Console.WriteLine(h.Peek());

我将留给读者实现进一步的实用方法,例如 Clear() .

关于c# - 如何创建一个 "buffer"来存储每个帧的变量的先前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32968974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com