Menu
CoddyTech

Supprimer des éléments

Fait partie de la section Logique & Flux du Journey Rust de Coddy. Leçon 13 sur 66.

Parfois, tu dois supprimer des éléments d’un vecteur, et pas seulement en ajouter. Rust fournit deux méthodes principales pour supprimer des éléments, chacune conçue pour des situations différentes.

La méthode .pop() supprime et renvoie le dernier élément du vecteur :

let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // supprime 40 et renvoie Some(40)
// numbers contient maintenant [10, 20, 30]

Remarque que .pop() renvoie une Option : il te donne Some(value) s’il y avait un élément à supprimer, ou None si le vecteur était déjà vide. Cela permet de l’utiliser sans risque, même sur des vecteurs vides.

La méthode .remove() supprime un élément à un indice précis et renvoie cet élément :

let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // supprime "banana"
// fruits contient maintenant ["apple", "cherry"]

Lorsque tu utilises .remove(), tous les éléments situés après l’indice supprimé se décalent vers la gauche pour combler le vide. Cette opération peut être plus lente pour les grands vecteurs lorsqu’on supprime un élément au début ou au milieu, car de nombreux éléments doivent être déplacés.

Les deux méthodes nécessitent que le vecteur soit modifiable, puisqu’elles en modifient le contenu. Choisis .pop() lorsque tu veux supprimer un élément à la fin, et .remove() lorsque tu dois le supprimer à une position précise.

challenge icon

Défi

Facile

Tu recevras deux entrées : d’abord une liste de nombres séparés par des virgules, puis un indice à supprimer. Le code de départ lit déjà les deux entrées et transforme les nombres en un vecteur mutable numbers. Supprime l’élément à l’indice spécifié et affiche les éléments restants sur des lignes distinctes.

Exigences :

  • Convertis la deuxième entrée (index_input) en un entier représentant l’indice
  • Utilise .remove() pour supprimer l’élément à cet indice
  • Affiche chaque élément restant sur une ligne distincte

Entrée :

  • Première ligne : des nombres entiers séparés par des virgules (par exemple, 10,20,30,40,50)
  • Deuxième ligne : un entier représentant l’indice à supprimer

Sortie : Affiche chaque élément restant du vecteur sur une ligne distincte

Essayez vous-même

use std::io;

fn main() {
    // Lire les nombres séparés par des virgules
    let mut numbers_input = String::new();
    io::stdin().read_line(&mut numbers_input).expect("Failed to read line");
    
    // Lire l’indice de l’élément à supprimer
    let mut index_input = String::new();
    io::stdin().read_line(&mut index_input).expect("Failed to read line");
    
    // Transforme "10,20,30" en vecteur : sépare aux virgules, convertit chaque partie en nombre, puis les rassemble dans un Vec
    let mut numbers: Vec<i32> = numbers_input
        .trim()
        .split(',')
        .map(|s| s.trim().parse().unwrap())
        .collect();
    
    // TODO: Écrivez votre code ci-dessous
    // 1. Convertir index_input en entier
    // 2. Supprimer l’élément à l’indice indiqué
    // 3. Afficher chaque élément restant sur une ligne distincte
    
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique & Flux

Entraînez-vous par vous-même : Compilateur Rust en ligne