乐闻世界logo
搜索文章和话题

如何在Rust中对数组、切片或Vec中的值求和?

1 个月前提问
1 个月前修改
浏览次数34

1个答案

1

在Rust中,对数组、切片或Vec(向量)中的值求和,有几种常见的方法。以下是几个具体的例子:

1. 使用迭代器和sum方法

对于数组、切片或Vec,可以使用迭代器来迭代每个元素,并使用sum方法来计算总和。这是一种非常简洁和Rust风格的方法。

rust
fn main() { let arr = [1, 2, 3, 4, 5]; let sum: i32 = arr.iter().sum(); println!("The sum is: {}", sum); let vec = vec![1, 2, 3, 4, 5]; let sum: i32 = vec.iter().sum(); println!("The sum is: {}", sum); let slice = &arr[1..4]; // 切片 [2, 3, 4] let sum: i32 = slice.iter().sum(); println!("The sum is: {}", sum); }

2. 使用for循环手动求和

尽管使用迭代器和sum方法更为简洁,但在某些情况下,手动遍历数组或Vec进行求和可以提供更多的控制,比如在求和过程中需要进行额外的操作。

rust
fn main() { let arr = [1, 2, 3, 4, 5]; let mut sum = 0; for &item in arr.iter() { sum += item; } println!("The sum is: {}", sum); let vec = vec![1, 2, 3, 4, 5]; let mut sum = 0; for item in &vec { sum += *item; } println!("The sum is: {}", sum); let slice = &arr[1..4]; // 切片 [2, 3, 4] let mut sum = 0; for &item in slice.iter() { sum += item; } println!("The sum is: {}", sum); }

3. 使用fold方法

fold方法是另一种灵活的方式来累加值,它可以提供一个初始值,并且可以在累加过程中执行更复杂的操作。

rust
fn main() { let vec = vec![1, 2, 3, 4, 5]; let sum: i32 = vec.iter().fold(0, |acc, &x| acc + x); println!("The sum is: {}", sum); }

以上三种方法各有用途,具体使用哪种方法取决于个人喜好以及特定的场景需求。在大多数情况下,使用迭代器和sum方法是最简单直接的方式。

2024年8月7日 17:21 回复

你的答案