Rust一维Vec垂直方向拼接、水平方向拼接,多个二维Vec垂直方向拼接

1.在Rust中,拼接二维Vec通常意味着将多个一维Vec组合成一个二维Vec。假设你想要将多个Vec<T>拼接成一个Vec<Vec<T>>,你可以使用迭代器方法来实现。

下面是一个示例,演示如何将多个一维Vec拼接成一个二维Vec

fn main() {
    // 创建几个一维Vec
    let vec1 = vec![1, 2, 3];
    let vec2 = vec![4, 5, 6];
    let vec3 = vec![7, 8, 9];

    // 使用collect将它们拼接成一个二维Vec
    let two_dimensional_vec: Vec<Vec<i32>> = vec![vec1, vec2, vec3];

    // 打印结果
    for row in two_dimensional_vec {
        println!("{:?}", row);
    }
}

输出将是:

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
如果你想要将这些一维Vec在水平方向上拼接(即,将所有元素放入同一个Vec中),你可以这样做:
fn main() {
    // 创建几个一维Vec
    let vec1 = vec![1, 2, 3];
    let vec2 = vec![4, 5, 6];
    let vec3 = vec![7, 8, 9];

    // 使用迭代器链拼接它们
    let flattened_vec: Vec<i32> = vec1.into_iter()
        .chain(vec2)
        .chain(vec3)
        .collect();

    // 打印结果
    println!("{:?}", flattened_vec);
}

输出将是:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

在这个例子中,chain方法被用来将多个迭代器连接成一个单一的迭代器,然后collect被用来将这个迭代器收集成一个Vec

根据你的需求,你可以选择垂直拼接(创建二维Vec)或水平拼接(创建一个更长的一维Vec)。

2.在Rust中,如果你想要将多个二维的Vec拼接成一个新的二维Vec,你可以使用迭代器的flatten方法来实现。这个方法会将嵌套的迭代器(在这个情况下是二维Vec)展平成一个单一的序列。

下面是一个示例,演示如何将多个二维的Vec<T>拼接成一个更大的二维Vec<T>

fn main() {
    // 创建几个二维Vec
    let vec2d1 = vec![vec![1, 2, 3], vec![4, 5, 6]];
    let vec2d2 = vec![vec![7, 8, 9], vec![10, 11, 12]];
    let vec2d3 = vec![vec![13, 14, 15], vec![16, 17, 18]];

    // 使用迭代器的flatten方法将它们拼接成一个新的二维Vec
    let flattened: Vec<Vec<i32>> = vec![vec2d1, vec2d2, vec2d3].into_iter()
        .flat_map(|inner_vec| inner_vec.into_iter().map(|inner_inner_vec| inner_inner_vec))
        .collect();

    // 打印结果
    for row in &flattened {
        println!("{:?}", row);
    }
}

输出将是:

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]
[10, 11, 12]
[13, 14, 15]
[16, 17, 18]

在这个例子中,我们首先创建了几个二维的Vec<i32>。然后,我们使用into_iter()将外层的Vec转换为迭代器,接着使用flat_map来将每个内部的Vec也转换为迭代器,并将它们映射为一维的Vec。最后,我们使用collect将迭代器收集成一个新的二维Vec

请注意,flat_map方法接受一个闭包,闭包的参数是外层迭代器的元素(在这里是一维的Vec),并且返回一个迭代器。在这个例子中,我们使用into_iter()将一维Vec转换为迭代器,然后使用map来保持每个元素的层级结构不变。

如果你想要将这些二维Vec在水平方向上拼接(即,将所有行连接成一行),你需要采用不同的方法,因为flatten是用于垂直方向的展平。如果你需要水平方向上的拼接,请提供更多的上下文,以便我能给出更准确的帮助。


相关推荐

  1. PostgreSQL拼接字符串的方法

    2024-05-25 20:10:28       57 阅读
  2. go拼接字符串的方法

    2024-05-25 20:10:28       35 阅读
  3. go语言,拼接字符串有哪些方式

    2024-05-25 20:10:28       35 阅读
  4. RustVec 排序方法汇总

    2024-05-25 20:10:28       48 阅读
  5. CSS中的水平垂直居中元素的多种方式

    2024-05-25 20:10:28       67 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-25 20:10:28       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-25 20:10:28       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-25 20:10:28       87 阅读
  4. Python语言-面向对象

    2024-05-25 20:10:28       96 阅读

热门阅读

  1. 邦芒面试:面试礼仪细节大揭秘

    2024-05-25 20:10:28       32 阅读
  2. Bitmap 的基本原理

    2024-05-25 20:10:28       31 阅读
  3. 共享内存bug

    2024-05-25 20:10:28       30 阅读
  4. leensa邀请码

    2024-05-25 20:10:28       34 阅读
  5. es索引同步

    2024-05-25 20:10:28       29 阅读
  6. Hadoop 再探讨

    2024-05-25 20:10:28       27 阅读
  7. Django rest_framework 基础应用

    2024-05-25 20:10:28       29 阅读
  8. P2P 技术:点对点网络的兴起

    2024-05-25 20:10:28       29 阅读
  9. Android 录音AudioRecord

    2024-05-25 20:10:28       35 阅读
  10. 【Python】—— 推导式

    2024-05-25 20:10:28       32 阅读
  11. 美易官方:Copilot全面升级!

    2024-05-25 20:10:28       34 阅读