let a = vec![ vec![1, 2], vec![3, 4], vec![5, 6] ];
如何将 a
中所有 Vec
包含的值收集到单个 Vec
中?
let a = vec![ vec![1, 2], vec![3, 4], vec![5, 6] ];
如何将 a
中所有 Vec
包含的值收集到单个 Vec
中?
let data = vec![vec![1, 2, 3, 4], vec![5, 6]];
let flattened = data.into_iter().flatten().collect::<Vec<u8>>();
assert_eq!(flattened, &[1, 2, 3, 4, 5, 6]);
Steve的回答是正确的,但你也应该了解flat_map -- 很有可能这才是你真正想使用的,它可以使你的代码更简单、更快。你可能永远不需要创建一个Vec的Vecs -- 只需要一个Iterator的Iterators,然后进行flat_map和collect操作。
flat_map 还可以将一个向量的向量展平。
let a = vec![vec![1, 2], vec![3, 4], vec![5, 6]];
let merged = a.into_iter().flat_map(|s| s).collect::<Vec<i32>>();
println!("{:?}", merged);
[1, 2, 3, 4, 5, 6]
flatten()
呢? - undefined