arrays - 如何将 iter.next() 转换为数组索引?

标签 arrays rust breadth-first-search

我将实现一个数组v来将当前顶点标记为已访问。但是,iter.next() 不能是 LinkedList 的索引或数组的索引。

  1. iter.next() 的输出不是整数,而是一个选项 Some
  2. 如何使用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/

相关文章:

c - BFS 制作 *char 列表数组的键列表,moSTLY 索引和 mallocing

c++ - 获取两个最大值的索引

java - 检测数组中的重复项

rust - 检测按顺序发生的字符串切片的重复元素

logging - 如何在Rust中将自定义数据传递到日志箱的宏?

binary-tree - 广度优先搜索遍历 VS 前序遍历 VS 深度优先搜索遍历

python - 如何干净利落地避免递归函数中的循环(广度优先遍历)

python - 如何将选定的数据转换为相同的长度(形状)

c++ - 函数返回指向数组的指针

rust - 借用 Rust 中的检查器和函数参数,正确还是过于热心?