如何以功能样式遍历2D向量? [英] How can I iterate over a 2D vector in functional style?
本文介绍了如何以功能样式遍历2D向量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
不幸的是,以下操作无效:
The following doesn't work, unfortunately:
let vecs: Vec<Vec<i32>> = get_vectors();
let result = vecs
.iter()
.iter()
.do_something()
.do_something_else() // etc
编译时出现错误:
error[E0599]: no method named `iter` found for type`std::slice::Iter<'_, std::vec::Vec<i32>>` in the current scope
--> src/main.rs:49:10
|
49 | .iter()
|
我可以避免
for row in vecs.iter() {
for column in row.iter() {
// do something
}
}
我真的更喜欢.iter()
方法.我该如何实现?
I'd really prefer the .iter()
method. How could I achieve that?
推荐答案
使用 flatten
:
fn main() {
let v = vec![vec![1, 2], vec![3, 4], vec![5, 6]];
for i in v.iter().flatten() {
println!("{}", i); // 1 2 3 4 5 6
}
}
flatten
将嵌套的迭代器转换为一个迭代器.
flatten
transforms nested iterators into one iterator.
这篇关于如何以功能样式遍历2D向量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文