Lär dig programmera i Rust · Lektion

Utöka och förminska

Infoga, ta bort och ändra storlek.

Lektion 3 av 413 steg

Utöka och förminska är en gratis lektion i Lär dig programmera i Rust på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär dig programmera i Rust, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär dig programmera i Rust innehåller totalt 4 lektioner.

Vektorer kan ändra storlek

En viktig egenskap hos vektorer är att de kan ändra storlek under körning. Du kan lägga till element när du får mer data och ta bort dem när du inte längre behöver dem.

Vid varje storleksändring måste vektorn vara deklarerad som mut.

Växa med push

Metoden push lägger till ett enda element sist och ökar vektorns längd med ett. Det är det vanligaste sättet att utöka en vektor.

Nedan växer vektorn från längden 0 till längden 3.

fn main() {
    let mut v = Vec::new();
    v.push("a");
    v.push("b");
    v.push("c");
    println!("len = {}", v.len());
}

Ta bort med pop

Metoden pop tar bort och returnerar det sista elementet inuti en Option. Normalt får du Some(value), eller None om vektorn redan var tom.

Detta minskar vektorns längd med ett.

fn main() {
    let mut v = vec![1, 2, 3];
    let last = v.pop();
    println!("popped {:?}", last);
    println!("now {:?}", v);
}

Infoga i mitten

Metoden insert placerar ett värde på ett angivet index och flyttar senare element åt höger. Indexet måste ligga från 0 till den aktuella längden.

Här infogar vi 99 på position 1.

fn main() {
    let mut v = vec![10, 20, 30];
    v.insert(1, 99);
    println!("{:?}", v);
}

Ta bort med index

Metoden remove tar bort elementet på ett index, returnerar det och flyttar senare element åt vänster för att fylla luckan.

Var försiktig: om du tar bort ett index som inte finns uppstår en panic.

fn main() {
    let mut v = vec![10, 20, 30];
    let gone = v.remove(0);
    println!("removed {}", gone);
    println!("{:?}", v);
}

Snabb borttagning med swap_remove

När ordningen inte spelar någon roll är swap_remove snabbare. Den flyttar det sista elementet till den borttagna platsen i stället för att flytta alla element.

Det ändrar ordningen men undviker kostnaden för förflyttningen.

fn main() {
    let mut v = vec![1, 2, 3, 4];
    let x = v.swap_remove(0);
    println!("took {}", x);
    println!("{:?}", v);
}

Rensa allt

Metoden clear tar bort alla element på en gång och lämnar en tom vektor med längden 0. Vektorn behåller sin allokerade kapacitet för återanvändning.

Det är praktiskt när du vill fylla en vektor från början igen.

fn main() {
    let mut v = vec![1, 2, 3];
    v.clear();
    println!("empty? {}", v.is_empty());
}

Korta till en viss längd

Metoden truncate kortar en vektor till en vald längd genom att ta bort de överflödiga elementen i slutet. Om vektorn redan är kortare händer ingenting.

Här behåller vi bara de två första elementen.

fn main() {
    let mut v = vec![1, 2, 3, 4, 5];
    v.truncate(2);
    println!("{:?}", v);
}

Slå ihop med extend

Metoden extend lägger till alla element från en annan samling. Det motsvarar att anropa push för varje element i ett enda steg.

Nedan läggs en andra lista till i slutet av den första.

fn main() {
    let mut v = vec![1, 2];
    v.extend(vec![3, 4, 5]);
    println!("{:?}", v);
}

Behåll bara vissa med retain

Metoden retain behåller bara de element som klarar ett test och tar bort resten på plats. Du skickar in en closure som returnerar en bool.

Här behåller vi bara de jämna talen.

fn main() {
    let mut v = vec![1, 2, 3, 4, 5, 6];
    v.retain(|n| n % 2 == 0);
    println!("{:?}", v);
}

Sortera element

Metoden sort ordnar om elementen från minst till störst på plats. Den ändrar inte längden, utan bara ordningen.

Vektorn måste vara mut för att kunna sorteras.

fn main() {
    let mut v = vec![3, 1, 4, 1, 5];
    v.sort();
    println!("{:?}", v);
}

Snabbtest

Testa dina kunskaper om hur vektorer växer och krymper.

Sammanfattning

Du utökade vektorer med push, insert och extend och minskade dem med pop, remove, swap_remove, clear och truncate.

Du filtrerade också med retain och ordnade elementen med sort. Nästa steg är att lagra structs i vektorer.

Gratis att börja

Lär dig Rust med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
39
Lektioner
144

Vanliga frågor

Är lektionen ”Utöka och förminska” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär dig programmera i Rust, inklusive ”Utöka och förminska”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär dig programmera i Rust innehåller totalt 4 lektioner.

Vad lär jag mig i ”Utöka och förminska”?

Infoga, ta bort och ändra storlek. Ni övar på Lär dig programmera i Rust med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lär dig programmera i Rust?

Du behöver inga förkunskaper. Utbildningen i Lär dig programmera i Rust på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Utöka och förminska”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lär dig programmera i Rust-lektionen?

Ja. Varje Lär dig programmera i Rust-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Skapa och fylla vektorer
  2. Indexering och iteration
  3. Utöka och förminska
  4. Vektorer med structs
← Tillbaka till Lär dig programmera i Rust