如何确定双端队列中的块大小
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何确定双端队列中的块大小相关的知识,希望对你有一定的参考价值。
我试图通过链接列表在cpp中编写一个deque类,但是,我不知道在创建deque时如何确定块(缓冲区)的长度。
选择一个好的大小的块将有助于减少在双端队列随机访问的复杂性。
我应该编写一个函数,当一个新元素被推送时,它会动态调整块的大小,但我发现它会有很高的复杂性,因为它可能会移动大量数据。
我应该如何处理这个问题。
答案
查看_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。
以上是关于如何确定双端队列中的块大小的主要内容,如果未能解决你的问题,请参考以下文章