在C+中包含固定大小数组的队列+; 我在C++中使用了计算密集型搜索算法< 队列>代码>。我想用包含固定大小数组的队列或类似FIFO结构替换此数据结构

在C+中包含固定大小数组的队列+; 我在C++中使用了计算密集型搜索算法< 队列>代码>。我想用包含固定大小数组的队列或类似FIFO结构替换此数据结构 ,c++,arrays,vector,queue,C++,Arrays,Vector,Queue,这种替换的动机是减少运行时间。在分析过程中,我注意到在创建和向向量添加内容上花费了相当多的时间。我用固定大小的数组替换了一些关键向量,并测量了20-50%的运行时间减少。因此,我想替换上面FIFO数据结构中的向量。请注意,所有有问题的代码都是最内部循环的一部分,因此在运行时会有非平凡的减少。您可以使用std::queue来明确地给出您所要求的内容。每个元素都是固定大小数组的队列 或者,您可以将实际数据存储在队列外的缓冲区中,只存储指向缓冲区的指针/迭代器。我看不出制作固定大小数组的队列会有什么帮

这种替换的动机是减少运行时间。在分析过程中,我注意到在创建和向向量添加内容上花费了相当多的时间。我用固定大小的数组替换了一些关键向量,并测量了20-50%的运行时间减少。因此,我想替换上面FIFO数据结构中的向量。请注意,所有有问题的代码都是最内部循环的一部分,因此在运行时会有非平凡的减少。

您可以使用
std::queue
来明确地给出您所要求的内容。每个元素都是固定大小数组的队列


或者,您可以将实际数据存储在队列外的缓冲区中,只存储指向缓冲区的指针/迭代器。

我看不出制作固定大小数组的队列会有什么帮助,向量可以便宜地交换和移动,数组不能。但这可能没有您的想法,但是您是否考虑过为队列适配器使用默认容器,即std::deque?很好奇,但是您是否在调试中进行了分析<代码>矢量在调试中速度较慢@juanchopanza说真的,OP应该考虑
std::unique\u ptr>
,它可以让您快速移动,并具有固定大小缓冲区的大部分优势,如果这个
std::vector
实际上是个问题。@Yakk我相信我是在发布模式下评测的,因为我在Xcode方案中更新了相应的条目。
std::unique\u ptr
std::array
相比,间接成本适中,但是对于中等大小的
N
或更大的
移动速度要快得多。是的。它还将执行与他现在拥有的
队列
非常类似的操作。但是,是的,值得指出的是,这个替代方案也会阻止不必要的拷贝。并且避免了需要
保留
,这可能会解释性能问题。