【发布时间】:2018-06-01 06:37:07
【问题描述】:
我有一个较大的固定大小数组u32 的可变大小数组。大多数第二维数组将为空(即第一个数组将稀疏填充)。我认为Vec 是最适合这两个维度的类型(Vec<Vec<u32>>)。因为我的第一个数组可能非常大,所以我想找到最节省空间的方式来表示它。
我看到两个选项:
我可以使用
Vec<Option<Vec<u32>>>。我猜Option是一个标记联合,这将导致每个单元格被sizeof(Vec<u32>)向上舍入到标记的下一个单词边界。我可以直接对所有单元格使用
Vec::with_capacity(0)。一个空的Vec分配零堆直到它被使用吗?
哪种方法最节省空间?
【问题讨论】:
-
我猜... — 为什么不直接使用
mem::size_of来找出大小? -
谢谢!鉴于我对这门语言非常陌生,我仍然希望能将这些点连在一起。