如何确定双端队列中的块大小

时间:2019-04-18 08:01:06

标签: c++

我试图通过链接列表在cpp中编写一个双端队列类,但是,我不知道如何在创建双端队列时确定块(缓冲区)的长度。

为块选择合适的大小将有助于降低双端队列中随机访问的复杂性。

我应该编写一个函数,当推送一个新元素时,它可以动态地调整块的大小,但是我发现它的时间复杂度很高,因为它可能会移动大量数据。

我应该如何处理这个问题。

1 个答案:

答案 0 :(得分:0)

查看_DEQUESIZ的代码(每个块的元素数):

#define _DEQUESIZ   (sizeof (_Ty) <= 1 ? 16 \
: sizeof (_Ty) <= 2 ? 8 \
: sizeof (_Ty) <= 4 ? 4 \
: sizeof (_Ty) <= 8 ? 2 : 1)    /* elements per block (a power of 2) */

元素增长得越大,元素减少到的数量就越少。仅对于大小大于8个字节的元素,您会获得预期的开销随元素大小的增加而按百分比减少的情况。

查看原始答案here