Supprimer des éléments
Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 13 sur 66.
Parfois, vous devez supprimer des éléments d'un vecteur, et pas seulement en ajouter. Rust propose deux méthodes principales pour supprimer des éléments, chacune étant 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, renvoie Some(40)
// numbers est maintenant [10, 20, 30]Remarquez que .pop() retourne un Option - il vous 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 en toute sécurité, même sur des vecteurs vides.
La méthode .remove() supprime un élément à un index spécifique et renvoie cet élément :
let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // supprime "banana"
// fruits est maintenant ["apple", "cherry"]Lorsque vous utilisez .remove(), tous les éléments situés après l'index supprimé se déplacent vers la gauche pour combler le vide. Cette opération peut être plus lente pour les vecteurs de grande taille lors d'une suppression au début ou au milieu, car de nombreux éléments doivent être déplacés.
Les deux méthodes exigent que le vecteur soit mutable puisqu'elles modifient son contenu. Choisissez .pop() lorsque vous voulez supprimer un élément à la fin, et .remove() lorsque vous devez supprimer un élément à une position spécifique.
Défi
FacileVous recevrez deux entrées : d'abord, une liste de nombres séparés par des virgules, et ensuite, un index à supprimer. Lisez les deux entrées, créez un vecteur à partir des nombres, supprimez l'élément à l'index spécifié et affichez les éléments restants sur des lignes distinctes.
Exigences :
- Lisez la première entrée contenant des nombres séparés par des virgules (par exemple,
10,20,30,40,50) - Divisez la chaîne par les virgules et convertissez chaque nombre en un entier
- Créez un vecteur mutable à partir de ces nombres
- Lisez la deuxième entrée et convertissez-la en un entier représentant l'index
- Utilisez
.remove()pour supprimer l'élément à cet index - Affichez chaque élément restant sur une ligne distincte
Entrée :
- Première ligne : Entiers séparés par des virgules (par exemple,
10,20,30,40,50) - Deuxième ligne : Un entier représentant l'index à supprimer
Sortie : Affichez chaque élément restant du vecteur sur une ligne distincte
Aide-mémoire
Rust propose deux méthodes principales pour supprimer des éléments des vecteurs :
La méthode .pop() supprime et renvoie le dernier élément :
let mut numbers = vec![10, 20, 30, 40];
let last = numbers.pop(); // supprime 40, renvoie Some(40)
// numbers est maintenant [10, 20, 30].pop() renvoie un type Option - Some(value) si un élément a été supprimé, ou None si le vecteur était vide.
La méthode .remove() supprime un élément à un index spécifique et le renvoie :
let mut fruits = vec!["apple", "banana", "cherry"];
let removed = fruits.remove(1); // supprime "banana"
// fruits est maintenant ["apple", "cherry"]Lors de l'utilisation de .remove(), tous les éléments après l'index supprimé se décalent vers la gauche pour combler le vide.
Les deux méthodes nécessitent que le vecteur soit mutable. Utilisez .pop() pour supprimer de la fin, et .remove() pour supprimer d'une position spécifique.
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'index à supprimer
let mut index_input = String::new();
io::stdin().read_line(&mut index_input).expect("Failed to read line");
// TODO: Écrivez votre code ci-dessous
// 1. Diviser numbers_input par les virgules et convertir en entiers
// 2. Créer un vecteur mutable à partir de ces nombres
// 3. Convertir index_input en un entier
// 4. Supprimer l'élément à l'index spécifié
// 5. Afficher chaque élément restant sur une ligne séparée
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logic & Flow
1Structures de contrôle avancées
L'expression 'match'Filtrage de plusieurs valeursFiltrage d'intervallesL'expression 'if let'Les boucles en tant qu'expressionsRécapitulatif - Analyseur de commandes simple4Regrouper des données avec les structures
Qu'est-ce qu'une structure ?Aperçu des structuresAccéder aux champs d'une structureStructures mutablesLes structures comme paramètres de fonctionStructures tupleRécapitulatif - Créer une structure Book2Introduction aux vecteurs
Qu'est-ce qu'un vecteur ?Créer un vecteurAjouter des éléments avec pushAccéder aux éléments d'un vecteurItérer sur un vecteurItération mutableSupprimer des élémentsRécapitulatif - Suivi de score basique5Paires clé-valeur avec les Hash Maps
Qu'est-ce qu'une Hash Map ?Créer une Hash MapInsérer des paires clé-valeurAccéder aux valeursParcourir une Hash MapMettre à jour une valeurSupprimer une paireRécapitulatif - Compteur de mots8Projet : Inventaire d'articles simple
Configuration du projetAjouter un articleVérifier le stockVendre un articleAssembler le tout3Liste de tâches en ligne de commande
Configuration du projetAjouter une tâcheAfficher toutes les tâchesSupprimer une tâcheCode final