c# - 我正在寻找“滑动阵列”
问题描述
例如,有没有什么东西可以让C#
创建数组成为可能int[6,10]
。并且总是当我添加新元素时[i,0]
,该行中的所有元素都会移动+1
。最后将删除。
现在我不得不做这样的事情:
array[i, 2] = array[i, 1];
array[i, 1] = array[i, 0];
array[i, 0] = value;
例如使用带有 int 和 List 的字典会更好吗?
编辑:我不仅移动这些数据,我还将使用这些数据来计算一些东西。所以我认为队列不会对此有好处。
我需要这样的方法。在这种方法中,我只为数组 [6,2] 执行此操作。现在我想我需要更多地了解我的历史。所以我会有数组[6,10]。我将检查不同的情况并创建依赖项。我需要一些看起来尽可能清晰和快速工作的东西。
public static double CalculateLastValue(double value, KalmanModel k, int i)
{
if (k.LastDistance[i, 0] == 0 && k.LastDistance[i, 1]==0)
{
k.LastDistance[i, 0] = value;
k.LastDistance[i, 1] = value;
}
if (k.LastDistance[i, 0] == k.LastDistance[i, 1])
{
if (Math.Abs(value - k.LastDistance[i, 0]) > 2 && value < k.LastDistance[i, 0])
{
value = k.LastDistance[i, 0] - 2;
}
else if (Math.Abs(value - k.LastDistance[i, 0]) > 2 && value > k.LastDistance[i, 0])
{
value = k.LastDistance[i, 0] + 2;
}
k.LastDistance[i, 1] = k.LastDistance[i, 0];
k.LastDistance[i, 0] = value;
return value;
}
else if (k.LastDistance[i, 0] > k.LastDistance[i, 1])
{
if (value >= k.LastDistance[i, 0])
{
if (Math.Abs(value - k.LastDistance[i, 0]) > 2)
{
value = k.LastDistance[i, 0] + 2;
}
k.LastDistance[i, 1] = k.LastDistance[i, 0];
k.LastDistance[i, 0] = value;
return value;
}
else
{
value = k.LastDistance[i, 0];
k.LastDistance[i, 1] = k.LastDistance[i, 0];
return value;
}
}
else
{
if (value <= k.LastDistance[i, 0])
{
if (Math.Abs(value - k.LastDistance[i, 0]) > 2)
{
value = k.LastDistance[i, 0] - 2;
}
k.LastDistance[i, 1] = k.LastDistance[i, 0];
k.LastDistance[i, 0] = value;
return value;
}
else
{
value = k.LastDistance[i, 0];
k.LastDistance[i, 1] = k.LastDistance[i, 0];
return value;
}
}
}
解决方案
您想要的没有特定的数据结构。此外,您已经提到添加元素不会经常发生......所以KIS:保持简单。
您可以编写一个辅助函数,例如:
public static void PushElement<T>(ref T[,] arr, int index, T value)
{
var len1 = arr.GetLength(1);
Array.Copy(arr, index * len1, arr, index * len1 + 1, len1 - 1);
arr[index, 0] = value;
}
public static void Main()
{
int[,] arr = { { 1, 2, 3 }, { 4, 5, 6 } };
PushElement(ref arr, 1, 7);
arr[1,:]
现在将包含 7,4,5。
推荐阅读
- css - 少标签前的运算符“&”是什么意思以及如何转换为scss
- variables - 如何将 a 参数的函数与 b 参数之一组合到 a + b 参数的函数?
- c++ - 如何使 perf_event_open() 中的 PERF_COUNT_SW_CONTEXT_SWITCHES 配置工作?
- pandas - 带有 np.datetime 的 pandas.date_range 返回错误
- javascript - javascript 中的“'toggleRow' 未定义”。我的函数未找到或被“定义”为错误消息 sais
- newrelic - 基于 Java 堆使用情况的警报
- python - 使用 django 表单将信息更新到数据库时,form.is_valid() 不起作用
- laravel - 在 Laravel “未定义的偏移量:0”
- linux - 如何将命令返回的值存储在 shell 脚本中?
- java - 我没有得到如何在 WSDL 服务调用中设置 XML 请求