Modifier les vecteurs : insert, erase, clear
Insérer, supprimer et vider des éléments en tenant compte des règles d’invalidation des itérateurs
Modifier les vecteurs : insert, erase, clear est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C++ Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C++ Academy comprend 4 leçons au total.
Insérer à la fin
L’insertion la plus rapide : push_back ou emplace_back — les deux ajoutent l’élément à la fin en O(1) amorti.
Insérer à une position arbitraire
insert(pos, value) décale vers la droite tout ce qui se trouve après pos. Opération en O(n).
std::vector<int> v = {1, 2, 4, 5};
v.insert(v.begin() + 2, 3); // {1, 2, 3, 4, 5}Insérer une plage
Insérez en une seule fois tous les éléments d’un autre conteneur.
std::vector<int> v = {1, 5};
std::vector<int> mid = {2, 3, 4};
v.insert(v.begin() + 1, mid.begin(), mid.end());
// {1, 2, 3, 4, 5}Insérer plusieurs copies
Insérez n copies de la même valeur.
std::vector<int> v = {1, 4};
v.insert(v.begin() + 1, 2, 99); // {1, 99, 99, 4}Effacer un élément
erase(pos) supprime l’élément situé à l’itérateur et décale vers la gauche tout ce qui le suit. Renvoie un itérateur vers l’élément suivant.
std::vector<int> v = {1, 2, 3, 4};
v.erase(v.begin() + 1); // {1, 3, 4}Effacer une plage
Supprimez tous les éléments de la plage semi-ouverte [first, last).
v.erase(v.begin() + 1, v.begin() + 3);L’idiome erase-remove
Pour supprimer tous les éléments correspondant à un prédicat sans laisser de trous, combinez std::remove_if et erase.
#include <algorithm>
v.erase(
std::remove_if(v.begin(), v.end(), [](int x) { return x < 0; }),
v.end()
);C++20 std::erase et std::erase_if
C++20 a ajouté des fonctions libres qui encapsulent l’idiome erase-remove.
std::erase(v, 0); // remove all 0s
std::erase_if(v, [](int x) { return x < 0; });clear : supprimer tous les éléments
clear() supprime tous les éléments, mais conserve la capacité. C’est utile si vous prévoyez de remplir à nouveau le vecteur.
pop_back : supprimer le dernier élément
Suppression du dernier élément en O(1). La fonction ne renvoie aucune valeur — récupérez l’élément avant si vous en avez besoin.
int last = v.back();
v.pop_back();Règles d’invalidation des itérateurs
insert et erase invalident chaque itérateur situé à partir de la position modifiée. Erase renvoie l’itérateur valide suivant, ce qui vous permet de continuer l’itération.
Vérification rapide
Que fait std::remove_if à lui seul sur un vecteur ?
Récapitulatif
insert et erase fonctionnent à des positions arbitraires en O(n). Utilisez push_back/pop_back pour obtenir O(1) à la fin. Appliquez l’idiome erase-remove (ou std::erase_if de C++20) pour supprimer les éléments correspondants.
Questions Fréquemment Posées
La leçon « Modifier les vecteurs : insert, erase, clear » est-elle gratuite ?
Oui — le texte complet de « Modifier les vecteurs : insert, erase, clear » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C++ Academy, passe à CoddyKit PRO. Le cours C++ Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Modifier les vecteurs : insert, erase, clear » ?
Insérer, supprimer et vider des éléments en tenant compte des règles d’invalidation des itérateurs Tu pratiques C++ Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer C++ Academy ?
Aucune expérience préalable n'est requise. C++ Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Modifier les vecteurs : insert, erase, clear » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon C++ Academy ?
Oui. Chaque leçon C++ Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Bases de std::vector : push_back, size, capacity
- Parcourir les vecteurs : index, range-for et itérateurs
- Modifier les vecteurs : insert, erase, clear
- Vector, std::array ou tableau C