【问题标题】:boost pool with specified element size, and specified initial # of element?具有指定元素大小和指定初始元素 # 的提升池?
【发布时间】:2011-07-12 09:32:18
【问题描述】:

boost::pool 构造函数采用“元素大小”参数。
boost::object_pool 构造函数采用“initial # of element”参数。

我想用“元素大小 S”和“元素的初始 N”创建池。
boost::pool 可以做到这一点吗?

谢谢

【问题讨论】:

    标签: boost pool boost-pool


    【解决方案1】:

    您可以使用object_pool 做到这一点;它根据ElementType 模板参数推断其元素的大小,因此无需显式指定大小。您可以指定请求的块数(您的“N”)作为附加的构造函数参数。

    基于 OP cmets 的更新:

    来自boost::pool 来源:

    explicit pool(const size_type nrequested_size,
        const size_type nnext_size = 32)
    

    所以你可以这样做:

    boost::pool<> p(8 * sizeof(int), 64);
    

    如果您想要一个返回大小为 8 个整数的块的池,并进行 64 * 8 个整数的初始分配。超过初始分配的块后,存储将翻倍。

    【讨论】:

    • 我想要原始的 void* 或 char* 缓冲区,object_pool 不会创建 ElementType 对象吗?
    • 此外,有没有办法动态定义 N 位而不用 char[N] 成员定义 ElementType?也许通过模板?
    • @Eugene:我不知道“动态”要求,所以我更新了我的答案以包含它。如果您认为该要求很重要,也请将该要求添加到问题中 - 这将使其他人以后更容易搜索该问题。
    猜你喜欢
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    相关资源
    最近更新 更多