0Pricing
C++ Academy · Leçon

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

  1. Algorithmes non modificateurs : find, count, all_of
  2. Algorithmes modificateurs : transform, copy_if, replace
  3. Tri et partitionnement : sort, stable_partition
  4. Algorithmes numériques : accumulate, reduce, transform_reduce
← Retour à C++ Academy