Ce face Vec::rotate_left
rotate_left(k) mută primele k elemente la sfârșitul vectorului; restul avansează spre început. După rotire, elementul care era pe poziția k ajunge primul. rotate_right(k) mută ultimele k elemente la început.
Rotirea se face pe loc, fără vector nou. Este utilă pentru ture prin rotație, liste circulare sau cifruri simple. Valoarea k trebuie să fie cel mult lungimea; o valoare mai mare dă panic (folosește k % v.len()).
Parametri
| Parametru | Descriere |
|---|---|
mid / k |
Cu câte poziții se rotește (0 până la len()). |
Ce returnează
Nimic.
Exemple
Exemplul 1: Cine e de serviciu azi
fn main() {
let mut ture = vec!["Ana", "Mihai", "Ioana", "Radu"];
for zi in ["luni", "marți", "miercuri", "joi", "vineri"] {
println!("{zi:9} de serviciu: {}", ture[0]);
ture.rotate_left(1);
}
}
Rezultat
luni de serviciu: Ana
marți de serviciu: Mihai
miercuri de serviciu: Ioana
joi de serviciu: Radu
vineri de serviciu: Ana
Exemplul 2: Stânga, dreapta, doar o bucată
fn main() {
let mut v = vec![1, 2, 3, 4, 5, 6];
v.rotate_left(2);
println!("rotate_left(2): {:?}", v);
v.rotate_right(2);
println!("rotate_right(2): {:?}", v);
v[..3].rotate_left(1);
println!("doar primele 3: {:?}", v);
}
Rezultat
rotate_left(2): [3, 4, 5, 6, 1, 2]
rotate_right(2): [1, 2, 3, 4, 5, 6]
doar primele 3: [2, 3, 1, 4, 5, 6]
Greșeli frecvente
- Dai o valoare mai mare decât lungimea:
v.rotate_left(10)pe un vector cu 4 elemente oprește programul. Foloseștev.rotate_left(10 % v.len())(și verifică întâi că vectorul nu e gol). - Confunzi direcțiile:
rotate_left(1)trimite primul element la final.
Comenzi înrudite
Vec::reverse: Inversează pe loc ordinea elementelor: primul devine ultimul, ultimul devine primul.VecDeque: Coada cu două capete: adaugă și scoate rapid elemente atât la început, cât și la sfârșit.Vec::split_at: Împarte vectorul în două slice-uri la o poziție, fără copiere: elementele dinainte și elementele de la poziție încolo.