क्या वेक्टर के प्रत्येक n * i तत्व को प्राप्त करने का कोई चतुर तरीका है? मेरे पास यह वेक्टर है:

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

मुझे इस वेक्टर का हर तीसरा मूल्य चाहिए, इसलिए आउटपुट होगा:

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

मुझे पता है कि मैं इसे लूप के साथ प्राप्त कर सकता हूं:

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());
    }
}
2
Krzysztof Kaczyński 4 जिंदा 2021, 23:38
1
प्रश्न शीर्षक में n और i क्या हैं? और ऐसा लगता है कि आपके पास समाधान है, तो आपका प्रश्न वास्तव में क्या है? अगर आपके समाधान के बारे में कुछ ऐसा है जो आपको पसंद नहीं है, तो कृपया हमें बताएं कि वह क्या है, ताकि हम समझ सकें कि किस समस्या का समाधान करना है।
 – 
Sven Marnach
4 जिंदा 2021, 23:55

1 उत्तर

सबसे बढ़िया उत्तर

प्रत्येक 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]

यह सभी देखें:

5
kmdreko 5 जिंदा 2021, 00:16
यह बहुत साफ दिखता है: डी। धन्यवाद @kmdreko
 – 
Krzysztof Kaczyński
5 जिंदा 2021, 00:10