目前我需要用一些值(通常大约20)填充大量缓冲区(超过1024个),并且在每个循环中从一个选定的缓冲区中弹出一个值并将新值推回到所有缓冲区。
我从其他数组中选择索引缓冲区。 (正如我现在所看到的,没有好办法将这个“ID缓冲区”值和缓冲区统一在一个2D变量中)
所以,这个缓冲区是FIFO缓冲区(先进先出)。我希望摆脱我的代码,在那里我制作了一个2D数组并用手移动每个数组。 目前我正在初始化这个数组:
double** BranchSymbols;
BranchSymbols = new double*[Size];
for (int i=0; i<Size; i++)
{
BranchSymbols[i] = new double[FIFOsize];
}
正如我所见,没有办法制作一个带有队列的2D数组。我知道这个结构:
vector<queue<double>> FIFO(SomeSize, queue<double> fifo(FIFOSize))
但在这种情况下,矢量工作性能不佳,它看起来像一个非常糟糕的矢量用法。有没有好的方法来做这样的事情有好的表现?
编辑:哦对不起伙计们,我搞砸了矢量示例:(我将使用2D矢量构建,但我希望还有其他一些解决方案。
更新:好的家伙,在你们所有人建议用矢量选项后我试了一下。因此,当我使用手动移位处理2D阵列时,程序在一刻(&lt;&lt;&lt; 1秒)内计算所有内容。在我输入vector&gt;之后计算需要5秒多。这对我的应用来说是巨大的性能损失。
如果这很重要,我的代码会对这个2D变量进行3次大操作:
1)将所有内容复制到缓冲区变量
2)以与保存的缓冲区变量不同的顺序替换原始变量中的FIFO缓冲区数据。例如,在步骤1中,我将数据从FIFO缓冲区№1复制到FIFO№2。在步骤2,我需要将数据从原始FIFO№2复制到FIFO№4,依此类推。因此,我需要保存原始数据
3)从一个选定的FIFO缓冲区读取前端数据
4)移动所有FIFO缓冲区并放入新数据,然后重复所有。