벡터의 모든 n * i 요소를 얻는 방법이 있습니까?

Jan 05 2021

n * i벡터의 모든 요소 를 얻는 영리한 방법이 있습니까? 이 벡터가 있습니다.

let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];

이 벡터의 모든 세 번째 값을 원하므로 출력은 다음과 같습니다.

let result = vec![3, 6, 9];

for 루프로 이것을 달성 할 수 있다는 것을 알고 있습니다.

let mut result: Vec<i32> = vec![];
let offset = 3;
for (index, value) in example.iter().enumerate() {
    if (index + 1) % offset == 0 {
        result.push(value.clone());
    }
}

답변

1 kmdreko Jan 05 2021 at 04:07

n 번째 요소 마다 반복하려면을 사용하십시오 .step_by(). 그러나이를 사용하는 것은 초기 값에서 시작하므로 체인 .skip()도 필요합니다 . 놀이터 :

let example = vec![1, 2, 3, 4, 5, 6, 7, 8, 9];
let n = 3;
let result: Vec<_> = example.iter().skip(n-1).step_by(n).copied().collect();
println!("{:?}", result);
[3, 6, 9]

또한보십시오:

  • 각 N 번째 값을 반환하는 반복기
  • 매초마다 반복하는 방법