如何确定双端面中块的大小

How to determine the size of chunks in a deque

本文关键字:何确定      更新时间:2023-10-16

我正在尝试通过链接列表在 cpp 中编写一个 deque 类,但是,我不知道在创建 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 字节的元素,随着元素大小的增加,开销将减少预期百分比。

在此处查看原始答案。