【问题标题】:How to determine the size of chunks in a deque如何确定双端队列中块的大小
【发布时间】:2019-04-18 08:01:05
【问题描述】:

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

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

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

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

【问题讨论】:

标签: c++


【解决方案1】:

查看_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

【讨论】:

    猜你喜欢
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2018-07-02
    • 2015-05-01
    • 2023-03-28
    相关资源
    最近更新 更多