Algorithmes modificateurs : transform, copy_if, replace
Transformer, filtrer et remplacer des éléments avec les algorithmes standard
Algorithmes modificateurs : transform, copy_if, replace est une leçon C++ Academy gratuite sur CoddyKit. Ceci est la leçon 2 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.
Algorithmes modificateurs
Ces algorithmes écrivent dans une plage de sortie — soit sur place, soit vers un itérateur de destination.
std::copy
Copie une plage dans une autre. La plage de sortie doit être suffisamment grande, ou vous devez fournir un inséreur.
#include <algorithm>
#include <iterator>
std::vector<int> src = {1, 2, 3};
std::vector<int> dst;
std::copy(src.begin(), src.end(), std::back_inserter(dst));std::copy_if
Copie les éléments qui correspondent à un prédicat.
std::vector<int> evens;
std::copy_if(src.begin(), src.end(),
std::back_inserter(evens),
[](int x) { return x % 2 == 0; });std::transform
Applique une fonction à chaque élément et écrit le résultat. C’est comparable à une opération de transformation dans d’autres langages.
std::vector<int> v = {1, 2, 3};
std::vector<int> sq;
std::transform(v.begin(), v.end(),
std::back_inserter(sq),
[](int x) { return x * x; });
// sq is {1, 4, 9}std::transform sur deux plages
Combine deux plages d’entrée avec une fonction binaire.
std::vector<int> a = {1, 2, 3};
std::vector<int> b = {10, 20, 30};
std::vector<int> sum;
std::transform(a.begin(), a.end(), b.begin(),
std::back_inserter(sum), std::plus<int>{});
// sum is {11, 22, 33}std::replace et std::replace_if
Remplace sur place les éléments égaux à une valeur (ou correspondant à un prédicat).
std::vector<int> v = {1, 2, 3, 2};
std::replace(v.begin(), v.end(), 2, 99);
// v is {1, 99, 3, 99}std::fill
Définit chaque élément d’une plage sur une valeur.
std::vector<int> v(5);
std::fill(v.begin(), v.end(), 42);
// v is {42, 42, 42, 42, 42}std::generate
Définit chaque élément sur le résultat de l’appel d’une fonction. Utile pour générer des séquences.
std::vector<int> v(5);
int n = 0;
std::generate(v.begin(), v.end(), [&]() { return n++; });
// v is {0, 1, 2, 3, 4}std::iota
Depuis <numeric> — remplit une plage avec des valeurs croissantes consécutives.
#include <numeric>
std::vector<int> v(5);
std::iota(v.begin(), v.end(), 10);
// v is {10, 11, 12, 13, 14}std::reverse
Inverse sur place les éléments d’une plage.
std::vector<int> v = {1, 2, 3, 4};
std::reverse(v.begin(), v.end());
// v is {4, 3, 2, 1}std::rotate
Fait pivoter les éléments afin que l’élément à la position middle devienne le premier. Le premier élément d’origine passe à la fin de la région pivotée.
Idiome erase-remove avec std::remove
remove déplace les éléments indésirables vers l’arrière et renvoie un itérateur vers la nouvelle fin logique. Associez-le à erase pour réduire réellement la taille.
v.erase(
std::remove(v.begin(), v.end(), 0),
v.end()
);Vérification rapide
Quel algorithme convient le mieux pour « appliquer une fonction à chaque élément et construire un nouveau conteneur » ?
Récapitulatif
Les algorithmes de modification écrivent des résultats : copy, copy_if, transform, replace, fill, generate, iota, reverse, rotate et l’idiome erase-remove.
Questions Fréquemment Posées
La leçon « Algorithmes modificateurs : transform, copy_if, replace » est-elle gratuite ?
Oui — le texte complet de « Algorithmes modificateurs : transform, copy_if, replace » 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 « Algorithmes modificateurs : transform, copy_if, replace » ?
Transformer, filtrer et remplacer des éléments avec les algorithmes standard 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 2 sur 4.
Combien de temps prend la leçon « Algorithmes modificateurs : transform, copy_if, replace » ?
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
- Algorithmes non modificateurs : find, count, all_of
- Algorithmes modificateurs : transform, copy_if, replace
- Tri et partitionnement : sort, stable_partition
- Algorithmes numériques : accumulate, reduce, transform_reduce