我将实现一个数组v
来将当前顶点标记为已访问。但是,iter.next() 不能是 LinkedList 的索引或数组的索引。
iter.next()
的输出不是整数,而是一个选项Some
。- 如何使用
Some
中的值?如果我使用Some
中的值作为数组的索引。我应该将值转换为整数吗?
fn bfs(s: usize) {
let mut cells = vec![LinkedList::<usize>::new(); 4];
for (i, cell) in cells.iter_mut().enumerate() {
cell.push_front(i);
}
cells[0].push_back(1);
cells[0].push_back(2);
cells[1].push_back(2);
cells[2].push_back(0);
cells[2].push_back(3);
cells[3].push_back(3);
let mut iter = cells[s].iter();
let mut v = vec![0; 4];
// Entry point
for i in 0..cells[s].len() {
// It is incorrect, "iter.next()" it cannot be a index of LinkedList
// vector "v" to keep track of which vertex has been traversed
//v[iter.next()] = 1;
}
}
fn main() {
bfs(2);
}
最佳答案
iter.next()
返回Option
,你只需要解构它:
for i in 0..cells[s].len() {
let x = match iter.next() {
Some(x) => *x,
None => return,
};
v[x] = 1;
}
关于arrays - 如何将 iter.next() 转换为数组索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49827366/