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

问题描述 投票:0回答:1

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

选择一个好的大小的块将有助于减少在双端队列随机访问的复杂性。

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

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

c++
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.