首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候使用Box<Vec<..>>或Vec<Box<..>>?

什么时候使用Box<Vec<..>>或Vec<Box<..>>?
EN

Stack Overflow用户
提问于 2015-04-24 12:47:32
回答 2查看 3.6K关注 0票数 9

什么时候设计一个嵌套BoxVec的数据结构才有意义(反之亦然)?

在大多数情况下,您想要在堆中存储多个固定大小的东西,Box似乎是多余的,因为它只是(?)角色是堆-分配一个~单个值,而普通的Vec已经在堆中分配它的存储。

上下文:我仍然围绕着构建数据结构的各种锈蚀类型的角色。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-24 13:29:16

实际上只有几次您需要使用Box

  • 递归数据结构:与最外层的元素无关,所以不需要Vec<Box<T>>
  • 拥有的特征对象,必须是Box<Trait>,因为对象的大小是动态的;
  • 对特定内存地址敏感的东西,以便所包含的对象能够保持相同的内存位置(在任何稳定的公共API中几乎都不是这种情况,也绝对不是这种情况;与std::sync::mpsc::Select有关的一些处理问题是我所知道的唯一情况;需要的这种不安全和谨慎是select!存在的原因之一。这类东西(Handle.add)是不安全的东西。

如果这些情况都不适用,则不应该使用BoxBox<Vec<T>>就是一个这样的例子;拳击是完全多余的,增加了一个额外的间接水平,没有任何好处。

所以简单的版本是:

  • Box<Vec<T>>:从来没有。
  • Vec<Box<T>>:只有在T是一个特性的情况下,即您正在处理属性对象。
票数 14
EN

Stack Overflow用户

发布于 2022-09-05 03:25:25

如果您想缩小结构的大小(一个单词而不是三个单词),并且向量通常是空的,那么Box<Vec<T>>在很少的情况下对Option<Box<Vec<T>>>很有用。例如,在rustc中使用它。。但是,板条箱,这样做更好(仍然是一个字存储长度和容量内联,所以不需要太多的分配)。但是,如果您不想引入依赖关系,这仍然是有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29847928

复制
相关文章

相似问题

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