首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用自定义分配器减少向量的大小?

使用自定义分配器减少向量的大小?
EN

Stack Overflow用户
提问于 2013-05-22 23:40:35
回答 4查看 322关注 0票数 3

我在一台64位机器上使用Linux,我使用的是g++4.8。应用于std::vectorsizeof运算符返回:

代码语言:javascript
复制
sizeof(std::vector<float>) = 24
sizeof(std::vector<double>) = 24
sizeof(std::vector<long double>) = 24

我的问题是:有没有办法创建一个更小的向量,基于这样一个事实:我的应用程序永远不会需要超过1 GB个元素的向量?因为最理想的情况是,我可以有一个16字节的向量:指向开头的指针(8字节)、当前大小(4字节)和当前容量(4字节)。我是否必须从头开始重新编码我自己的向量,或者我可以使用自定义分配器来减小大小?

这个大小对我来说非常重要,因为我在内存超过100TB的超级计算机上工作,我在基本类上获得的每个字节最终都可以节省几TB的内存。

EN

Stack Overflow用户

回答已采纳

发布于 2013-05-22 23:45:58

不,你不能。

分配器最初的想法是,它们可以为数据的指针和引用类型定义对象。然而,这不再是真正允许的;allocator<T>::pointer必须是T*,并且容器可以自由地假定它是。

因此,如果你真的需要一个向量来使用某种紧凑的指针表示或其他东西,你必须自己实现一个。

对于大多数应用来说,标准库容器都是很好的默认值。但对于那些有特殊需求的人,你可能不得不用其他东西来代替他们。这似乎就是这里的情况。

票数 2
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16696063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档