【发布时间】:2022-10-06 17:25:47
【问题描述】:
在 Rust 中初始化多维 Vec 时,我可以像这样使用 vec!-macro:
vec![vec![0; 100]; 200]
但是,对于更高维度的Vecs,这会变得很混乱。目前,我正在使用这个:
vec![vec![vec![vec![vec![vec![vec![vec![0; N-1]; N-1]; N-1]; N-1]; 2]; 2]; 2]; 2]
这不是很简洁,而且维度的写入顺序与索引顺序相反。有没有更简洁的方法来做到这一点?我正在寻找类似的东西
vec![0; 2, 2, 2, 2, N-1, N-1, N-1, N-1]
-
您是否尝试在 crates.io 上寻找可以处理多维数组的 crate?
-
有箱子
ndarray,否则我相信宏是避免vec!的长链的唯一方法 -
我会推荐 ndarray 而不是 vecs 的 vecs,不仅是为了易于使用,而且 vecs 使用单独的分配并且会导致内存碎片。而 ndarray 会将所有数据存储在单个缓冲区中,它使用更少的内存并且访问效率更高。
-
@PeterHall @Ismail Maj @kmdreko 我现在尝试使用
ndarray板条箱,但在文档中找不到如何构造 8 维Array。有一些较低维度的示例(例如Array::zeros((2, 2))),但这似乎仅适用于最多 6 个维度。