如何以更简洁的方式将Rust不规则向量转换为矩阵?
Rust 不规则向量分割为矩阵的简洁实现方案
需求说明
现有一个形状不规则的Rust向量:
let v = vec![ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, ];
需要将其分割整理为如下两个矩阵:
let v1 = vec![ vec![0, 1, 2, 3], vec![4, 5, 6, 7], ]; let v2 = vec![ vec![8, 9], vec![10, 11], vec![12, 13], ];
注:示例中元素为连续值仅作演示,实际场景中矩阵数量也可能为3个或更多
当前可行实现
目前已有可行的实现方案,但写法较为繁琐:
let mut v1: Vec<Vec<usize>> = vec![]; for i in 0..2 { v1.push(v.iter().skip(i * 4).take(4).copied().collect()); } let mut v2: Vec<Vec<usize>> = vec![]; for i in 0..3 { v2.push(v.iter().skip(8 + i * 2).take(2).copied().collect()); }
期望的简洁实现
希望能有更简洁的写法,类似如下伪代码的形式:
let v1 = v.iter().every(4).take(2).collect(); let v2 = v.iter().skip(8).every(2).take(3).collect();
内容的提问来源于stack exchange,提问作者ynn
相关产品推荐
相关产品推荐

